Skip to main content

Python: .nota Files

NotaFileClient creates, signs, parses, validates, and serializes .nota files from Python. Everything on this page is purely off-chain and requires no RPC connection, only a private key for signing. The client is reachable as ntm.nota.

Builder pattern

.nota files are produced through a fluent builder chain. Each method returns a NotaBuilder so you can chain until you call serialize(), build(), or sign():

create(...)

Creates a new builder. Accepts the same fields as the TypeScript SDK but in snake_case:

sign(private_key)

Signs the builder payload with a private key in hex form. Produces a 65-byte ECDSA signature over the canonical JSON digest:
The key is never stored by the SDK. Sign as the final step; any mutation after signing invalidates the signature.

validate()

Runs schema and structural validation. Raises on schema mismatch, missing required fields, or (post-signing) a failing signature check:

parse(content)

Parses a serialized .nota JSON string back into a typed dict, verifying the signature if one is present:

serialize() / serialize(nota)

Produces canonical, deterministic JSON output. Same content, same bytes, every time:
Use this output to compute proof_hash for on-chain registration, to store in IPFS, or to ship over the wire.

End-to-end example