def account_info(self, account, representative=False, weight=False, pending=False):
        """
        Returns frontier, open block, change representative block, balance,
        last modified timestamp from local database & block count for
        **account**

        :param account: Account to return info for
        :type account: str

        :param representative: if True, also returns the representative block
        :type representative: bool

        :param weight: if True, also returns the voting weight
        :type weight: bool

        :param pending: if True, also returns the pending balance
        :type pending: bool

        :raises: :py:exc:`nano.rpc.RPCException`

        >>> rpc.account_info(
        ...     account="xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3"
        ... )
        {
          "frontier": "FF84533A571D953A596EA401FD41743AC85D04F406E76FDE4408EAED50B473C5",
          "open_block": "991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948",
          "representative_block": "991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948",
          "balance": "235580100176034320859259343606608761791",
          "modified_timestamp": "1501793775",
          "block_count": "33"
        }

        """

        account = self._process_value(account, 'account')

        payload = {"account": account}

        if representative:
            payload['representative'] = self._process_value(representative, 'strbool')
        if weight:
            payload['weight'] = self._process_value(weight, 'strbool')
        if pending:
            payload['pending'] = self._process_value(pending, 'strbool')

        resp = self.call('account_info', payload)

        for key in (
            'modified_timestamp',
            'block_count',
            'balance',
            'pending',
            'weight',
        ):
            if key in resp:
                resp[key] = int(resp[key])

        return resp