I have attached a patch adding the max_length parameter to LZMADecompressor.decompress().
I have chosen to store the pointer to any unconsumed input in the lzma stream object itself. The new convention is: if lzs.next_in != NULL, then there is valid data that needs to be prepended.
Since I expect that max_length will often be specified as a keyword argument, I had to change the argument clinic definition to allow all arguments to be specified as keyword arguments. I hope that's ok.
Testcases seem to run fine. No reference leaks with -R : either.
Comments?