code: def sign(wheelfile, replace=False, get_keyring=get_keyring):
      
      warn_signatures()
      WheelKeys, keyring = get_keyring()
  
      ed25519ll = signatures.get_ed25519ll()
  
      wf = WheelFile(wheelfile, append=True)
      wk = WheelKeys().load()
  
      name = wf.parsed_filename.group('name')
      sign_with = wk.signers(name)[0]
      print("Signing {} with {}".format(name, sign_with[1]))
  
      vk = sign_with[1]
      kr = keyring.get_keyring()
      sk = kr.get_password('wheel', vk)
      keypair = ed25519ll.Keypair(urlsafe_b64decode(binary(vk)),
                                  urlsafe_b64decode(binary(sk)))
  
      record_name = wf.distinfo_name + '/RECORD'
      sig_name = wf.distinfo_name + '/RECORD.jws'
      if sig_name in wf.zipfile.namelist():
          raise WheelError("Wheel is already signed.")
      record_data = wf.zipfile.read(record_name)
      payload = {"hash": "sha256=" + native(urlsafe_b64encode(hashlib.sha256(record_data).digest()))}
      sig = signatures.sign(payload, keypair)
      wf.zipfile.writestr(sig_name, json.dumps(sig, sort_keys=True))
      wf.zipfile.close()
docs: Sign a wheel