code: async def create(self) -> None:
          
  
          LOGGER.debug('Wallet.create >>>')
  
          try:
              await wallet.create_wallet(
                  config=json.dumps(self.config),
                  credentials=json.dumps(self.access_creds))
              LOGGER.info('Created wallet %s', self.name)
          except IndyError as x_indy:
              if x_indy.error_code == ErrorCode.WalletAlreadyExistsError:
                  LOGGER.debug('Wallet.create <!< Wallet %s already exists', self.name)
                  raise ExtantWallet('Wallet {} already exists'.format(self.name))
              LOGGER.debug(
                  'Wallet.create <!< indy error code %s on creation of wallet %s',
                  x_indy.error_code,
                  self.name)
              raise
  
          auto_remove = self.auto_remove
          self.auto_remove = False  # defer past this creation process
          async with self:
              did_info = await self.create_local_did(
                  self._von_config.get('seed', None),
                  self._von_config.get('did', None),
                  {'anchor': True})
              self.did = did_info.did
              self.verkey = did_info.verkey
              if 'link_secret_label' in self._von_config:
                  await self.create_link_secret(self._von_config['link_secret_label'])
          self.auto_remove = auto_remove
  
          LOGGER.debug('Wallet.create <<<')
docs: Persist the wallet. Raise ExtantWallet if it already exists.
  
          Actuators should prefer WalletManager.create() to calling this method directly - the wallet manager
          filters wallet configuration through preset defaults.