<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def delete_non_secret(self, typ: str, ident: str) -> None: """ Remove a non-secret record by its type and identifier. Silently return if no such record is present. Raise WalletState for closed wallet. :param typ: non-secret storage record type :param ident: non-secret storage record identifier """


        LOGGER.debug('Wallet.delete_non_secret >>> typ: %s, ident: %s', typ, ident)

        if not self.handle:
            LOGGER.debug('Wallet.delete_non_secret <!< Wallet %s is closed', self.name)
            raise WalletState('Wallet {} is closed'.format(self.name))

        try:
            await non_secrets.delete_wallet_record(self.handle, typ, ident)
        except IndyError as x_indy:
            if x_indy.error_code == ErrorCode.WalletItemNotFound:
                LOGGER.info('Wallet.delete_non_secret <!< no record for type %s on identifier %s', typ, ident)
            else:
                LOGGER.debug(
                    'Wallet.delete_non_secret <!< deletion of %s record on identifier %s raised indy error code %s',
                    typ,
                    ident,
                    x_indy.error_code)
                raise

        LOGGER.debug('Wallet.delete_non_secret <<<')