docs: async def write_non_secret(self, storec: StorageRecord, replace_meta: bool = False) -> StorageRecord:
          """
          Add or update non-secret storage record to the wallet; return resulting wallet non-secret record.
  
          :param storec: non-secret storage record
          :param replace_meta: whether to replace any existing metadata on matching record or to augment it
          :return: non-secret storage record as it appears in the wallet after write
          """
  
          LOGGER.debug('Wallet.write_non_secret >>> storec: %s, replace_meta: %s', storec, replace_meta)
  
          if not self.handle:
              LOGGER.debug('Wallet.write_non_secret <!< Wallet %s is closed', self.name)
              raise WalletState('Wallet {} is closed'.format(self.name))
  
          if not StorageRecord.ok_tags(storec.tags):
              LOGGER.debug('Wallet.write_non_secret <!< bad storage record tags %s; use flat {str: str} dict', storec)
              raise BadRecord('Bad storage record tags {}; use flat {{str:str}} dict'.format(storec))
  
          try:
              record = json.loads(await non_secrets.get_wallet_record(
                  self.handle,
                  storec.type,
                  storec.id,
                  json.dumps({
                      'retrieveType': False,
                      'retrieveValue': True,
                      'retrieveTags': True
                  })))
              if record['value'] != storec.value:
                  await non_secrets.update_wallet_record_value(
                      self.handle,
                      storec.type,
                      storec.id,
                      storec.value)
          except IndyError as x_indy:
              if x_indy.error_code == ErrorCode.WalletItemNotFound:
                  await non_secrets.add_wallet_record(
                      self.handle,
                      storec.type,
                      storec.id,
                      storec.value,
                      json.dumps(storec.tags) if storec.tags else None)
              else:
                  LOGGER.debug(
                      'Wallet.write_non_secret <!< Wallet lookup raised indy error code %s',
                      x_indy.error_code)
                  raise
          else:
              if (record['tags'] or None) != storec.tags:  # record maps no tags to {}, not None
                  tags = (storec.tags or {}) if replace_meta else {**record['tags'], **(storec.tags or {})}
  
                  await non_secrets.update_wallet_record_tags(
                      self.handle,
                      storec.type,
                      storec.id,
                      json.dumps(tags))  # indy-sdk takes '{}' instead of None for null tags
  
          record = json.loads(await non_secrets.get_wallet_record(
              self.handle,
              storec.type,
              storec.id,
              json.dumps({
                  'retrieveType': False,
                  'retrieveValue': True,
                  'retrieveTags': True
              })))
  
          rv = StorageRecord(storec.type, record['value'], tags=record.get('tags', None), ident=record['id'])
          LOGGER.debug('Wallet.write_non_secret <<< %s', rv)
          return rv