def convert_Close(entry: data.Close) -> pb.Directive:
    pbent = pb.Directive()
    close = pbent.close
    copy_meta(entry.meta, pbent.meta)
    copy_date(entry.date, pbent.date)
    close.account = entry.account
    return pbent
def convert_Open(entry: data.Open) -> pb.Directive:
    pbent = pb.Directive()
    open = pbent.open
    copy_meta(entry.meta, pbent.meta)
    copy_date(entry.date, pbent.date)
    open.account = entry.account
    if entry.currencies:
        open.currencies.extend(entry.currencies)
    # TODO(blais): Add enum
    return pbent
def convert_Transaction(entry: data.Transaction) -> pb.Directive:
    pbent = pb.Directive()
    txn = pbent.txn
    copy_meta(entry.meta, pbent.meta)
    copy_date(entry.date, pbent.date)
    if entry.flag:
        txn.flag = entry.flag.encode('utf8')
    if entry.payee:
        txn.payee = entry.payee
    txn.narration = entry.narration
    if entry.tags:
        txn.tags.extend(entry.tags)
    if entry.links:
        txn.links.extend(entry.links)
    for posting in entry.postings:
        pbpost = txn.postings.add()
        copy_posting(posting, pbpost)
    return pbent