docs: def from_passphrase(cls, passphrase=None):
          """ Create keypair from a passphrase input (a brain wallet keypair)."""
          if not passphrase:
              # run a rejection sampling algorithm to ensure the private key is
              # less than the curve order
              while True:
                  passphrase = create_passphrase(bits_of_entropy=160)
                  hex_private_key = hashlib.sha256(passphrase).hexdigest()
                  if int(hex_private_key, 16) < cls._curve.order:
                      break
          else:
              hex_private_key = hashlib.sha256(passphrase).hexdigest()
              if not (int(hex_private_key, 16) < cls._curve.order):
                  raise ValueError(_errors["PHRASE_YIELDS_INVALID_EXPONENT"])
  
          keypair = cls(hex_private_key)
          keypair._passphrase = passphrase
          return keypair