# standard imports
import logging

# external imports
from chainlib.stat import ChainStat
from chainlib.eth.block import (
        block_latest,
        block_by_number,
        Block,
        )

logg = logging.getLogger().getChild(__name__)

BLOCK_SAMPLES = 10


def init_chain_stat(rpc, block_start=0):
    stat = ChainStat()

    if block_start == 0:
        o = block_latest()
        r = rpc.do(o)
        try:
            block_start = int(r, 16)
        except TypeError:
            block_start = int(r)
        logg.debug('blockstart {}'.format(block_start))

    for i in range(BLOCK_SAMPLES):
        o = block_by_number(block_start-10+i)
        block_src = rpc.do(o)
        logg.debug('block {}'.format(block_src))
        block = Block(block_src)
        stat.block_apply(block)

    logg.debug('calculated block time {} from {} block samples'.format(stat.block_average(), BLOCK_SAMPLES))
    return stat