code: async def _seed2did(self) -> str:
          
  
          rv = None
          dids_with_meta = json.loads(await did.list_my_dids_with_meta(self.handle))  # list
  
          if dids_with_meta:
              for did_with_meta in dids_with_meta:  # dict
                  if 'metadata' in did_with_meta:
                      try:
                          meta = json.loads(did_with_meta['metadata'])
                          if isinstance(meta, dict) and meta.get('seed', None) == self._seed:
                              rv = did_with_meta.get('did')
                      except json.decoder.JSONDecodeError:
                          continue  # it's not one of ours, carry on
  
          if not rv:  # seed not in metadata, generate did again on temp wallet
              temp_wallet = await Wallet(
                  self._seed,
                  '{}.seed2did'.format(self.name),
                  None,
                  {'auto-remove': True}).create()
  
              rv = temp_wallet.did
              await temp_wallet.remove()
  
          return rv
docs: Derive DID, as per indy-sdk, from seed.
  
          :return: DID