code: async def create_local_did(self, seed: str = None, loc_did: str = None, metadata: dict = None) -> DIDInfo:
          
  
          LOGGER.debug('Wallet.create_local_did >>> seed: [SEED] loc_did: %s metadata: %s', loc_did, metadata)
  
          cfg = {}
          if seed:
              cfg['seed'] = seed
          if loc_did:
              cfg['did'] = loc_did
  
          if not self.handle:
              LOGGER.debug('Wallet.create_local_did <!< Wallet %s is closed', self.name)
              raise WalletState('Wallet {} is closed'.format(self.name))
  
          try:
              (created_did, verkey) = await did.create_and_store_my_did(self.handle, json.dumps(cfg))
          except IndyError as x_indy:
              if x_indy.error_code == ErrorCode.DidAlreadyExistsError:
                  LOGGER.debug('Wallet.create_local_did <!< DID %s already present in wallet %s', loc_did, self.name)
                  raise ExtantRecord('Local DID {} already present in wallet {}'.format(loc_did, self.name))
              LOGGER.debug('Wallet.create_local_did <!< indy-sdk raised error %s', x_indy.error_code)
              raise
  
          now = int(time())
          loc_did_metadata = {**(metadata or {}), 'since': now, 'modified': now}
          await did.set_did_metadata(self.handle, created_did, json.dumps(loc_did_metadata))
  
          rv = DIDInfo(created_did, verkey, loc_did_metadata)
  
          LOGGER.debug('Wallet.create_local_did <<< %s', rv)
          return rv
docs: Create and store a new local DID for use in pairwise DID relations.
  
          :param seed: seed from which to create (default random)
          :param loc_did: local DID value (default None to let indy-sdk generate)
          :param metadata: metadata to associate with the local DID
              (operation always sets 'since', 'modified' epoch timestamps)
          :return: DIDInfo for new local DID