from typing import Optional

from .address import split_addresses
from .building_id import concurrent_fetch_builing_ids
from .lenenergo import LenenergoParser
from .preprocess import preprocess_df


def pipeline(parser: Optional[LenenergoParser] = None) -> LenenergoParser:
    if parser is None:
        parser = LenenergoParser()

    print(parser)

    parser.df = split_addresses(parser.df)

    parser.df = concurrent_fetch_builing_ids(parser.df)

    parser.df = preprocess_df(parser.df)

    return parser