def schnorr_partial_sign(self, msg, privnonce, pubnonce_others,<EOL>raw=False, digest=hashlib.sha256):
if not HAS_SCHNORR:<EOL><INDENT>raise Exception("<STR_LIT>")<EOL><DEDENT>msg32 = _hash32(msg, raw, digest)<EOL>sig64 = ffi.new('<STR_LIT>')<EOL>res = lib.secp256k1_schnorr_partial_sign(<EOL>self.ctx, sig64, msg32, self.private_key,<EOL>pubnonce_others, privnonce)<EOL>if res <= <NUM_LIT:0>:<EOL><INDENT>raise Exception('<STR_LIT>'.format(res))<EOL><DEDENT>return bytes(ffi.buffer(sig64, <NUM_LIT:64>))<EOL>
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.