Files
chia-blockchain/chia/_tests/cmds/testing_classes.py
Matt HauffandGitHub 40db4635a8 [LABS-245] Enable PEP604 Ruff rules (#20269)
* Enable PEP604 Ruff rules

* Fix harcoded signature in test

* Hack CLVMStreamable test with note to fast follow
2025-11-18 12:34:00 -08:00

59 lines
1.7 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from chia_rs.sized_bytes import bytes32
from chia_rs.sized_ints import uint8, uint32, uint64
# This is a modified version of the TestBlockRecord from test_mempool_manager.py
@dataclass(frozen=True)
class TestBlockRecord:
"""
This is a subset of BlockRecord that the cli tests need
"""
header_hash: bytes32
height: uint32
timestamp: uint64 | None
prev_transaction_block_height: uint32
prev_transaction_block_hash: bytes32 | None
prev_hash: bytes32 | None
weight: uint64 = uint64(10000)
fees: uint64 = uint64(5000)
farmer_puzzle_hash: bytes32 = bytes32([1] * 32)
pool_puzzle_hash: bytes32 = bytes32([2] * 32)
sub_slot_iters: uint64 = uint64(1024)
total_iters: uint64 = uint64(12081)
deficit: uint8 = uint8(0)
@property
def is_transaction_block(self) -> bool:
return self.timestamp is not None
def height_hash(height: int) -> bytes32:
return bytes32(height.to_bytes(32, byteorder="big"))
def hash_to_height(int_bytes: bytes32) -> int:
return int.from_bytes(int_bytes, byteorder="big")
def create_test_block_record(
*, height: uint32 = uint32(11), timestamp: uint64 = uint64(10040), header_hash: bytes32 | None = None
) -> TestBlockRecord:
if header_hash is None:
header_hash = height_hash(height)
else:
height = uint32(hash_to_height(header_hash)) # so the heights make sense
return TestBlockRecord(
header_hash=header_hash,
height=height,
timestamp=timestamp,
prev_transaction_block_height=uint32(height - 1),
prev_transaction_block_hash=height_hash(height - 1),
prev_hash=height_hash(height - 1),
)