docs: async def get_local_did(self, loc: str) -> DIDInfo:
          """
          Get local DID info by local DID or verification key.
          Raise AbsentRecord for no such local DID.
  
          :param loc: DID or verification key of interest
          :return: DIDInfo for local DID
          """
  
          LOGGER.debug('Wallet.get_local_did >>> loc: %s', loc)
  
          if not self.handle:
              LOGGER.debug('Wallet.get_local_did <!< Wallet %s is closed', self.name)
              raise WalletState('Wallet {} is closed'.format(self.name))
  
          if ok_did(loc):  # it's a DID
              try:
                  did_with_meta = json.loads(await did.get_my_did_with_meta(self.handle, loc))
                  rv = DIDInfo(
                      did_with_meta['did'],
                      did_with_meta['verkey'],
                      json.loads(did_with_meta['metadata']) if did_with_meta['metadata'] else {})  # nudge None to empty
              except IndyError as x_indy:
                  if x_indy.error_code == ErrorCode.WalletItemNotFound:
                      LOGGER.debug('Wallet.get_local_did <!< DID %s not present in wallet %s', loc, self.name)
                      raise AbsentRecord('Local DID {} not present in wallet {}'.format(loc, self.name))
                  LOGGER.debug('Wallet.get_local_did <!< indy-sdk raised error %s', x_indy.error_code)
                  raise
  
          else:  # it's a verkey
              dids_with_meta = json.loads(await did.list_my_dids_with_meta(self.handle))  # list
              for did_with_meta in dids_with_meta:
                  if did_with_meta['verkey'] == loc:
                      rv = DIDInfo(
                          did_with_meta['did'],
                          did_with_meta['verkey'],
                          json.loads(did_with_meta['metadata']) if did_with_meta['metadata'] else {})
                      break
              else:
                  LOGGER.debug('Wallet.get_local_did <!< Wallet %s has no local DID for verkey %s', self.name, loc)
                  raise AbsentRecord('Wallet {} has no local DID for verkey {}'.format(self.name, loc))
  
          LOGGER.debug('Wallet.get_local_did <<< %s', rv)
          return rv