code: async def open(self) -> 'Wallet':
          
  
          LOGGER.debug('Wallet.open >>>')
  
          if not self.created:
              LOGGER.debug('Wallet.open: <!< absent wallet %s', self.name)
              raise AbsentWallet('Cannot open wallet {}: not created'.format(self.name))
  
          self._handle = await wallet.open_wallet(
              json.dumps(self.cfg),
              json.dumps(self.access_creds))
          LOGGER.info('Opened wallet %s on handle %s', self.name, self.handle)
  
          self._did = await self._seed2did()
          self._verkey = await did.key_for_local_did(self.handle, self.did)
          LOGGER.info('Wallet %s got verkey %s for existing DID %s', self.name, self.verkey, self.did)
  
          LOGGER.debug('Wallet.open <<<')
          return self
docs: Explicit entry. Open wallet as configured, for later closure via close().
          For use when keeping wallet open across multiple calls.
  
          :return: current object