docs: def schnorr_partial_sign(self, msg, privnonce, pubnonce_others,
                               raw=False, digest=hashlib.sha256):
          """
          Produce a partial Schnorr signature, which can be combined using
          schnorr_partial_combine to end up with a full signature that is
          verifiable using PublicKey.schnorr_verify.
  
          To combine pubnonces, use PublicKey.combine.
  
          Do not pass the pubnonce produced for the respective privnonce;
          combine the pubnonces from other signers and pass that instead.
          """
          if not HAS_SCHNORR:
              raise Exception("secp256k1_schnorr not enabled")
  
          msg32 = _hash32(msg, raw, digest)
          sig64 = ffi.new('char [64]')
  
          res = lib.secp256k1_schnorr_partial_sign(
              self.ctx, sig64, msg32, self.private_key,
              pubnonce_others, privnonce)
          if res <= 0:
              raise Exception('failed to partially sign ({})'.format(res))
  
          return bytes(ffi.buffer(sig64, 64))