I C,
I can't remember exactly why I removed these, but it probably had to do with the mutation mechanism now being much more stateless.
You should be able to approximate s_mutate and s_render with something like:
for mutations in r.mutate():
mutation_context = MutationContext(mutations=mutations, message_path=[])
data = r.render(mutation_context)
I haven't tested this, but it should more or less do the trick. If it does work, we can also clean up the interface a bit (e.g. the message_path arg could be optional).
You may also find the FileConnection class helpful (file_connection.py). I just now realized it doesn't seem to be in the docs yet.
Let me know if that works -- if not I can pull up a test script and see if I missed anything.
Happy fuzzing,
Joshua