Interesting, I think that would make sense for Python.
def do_thing():
with open('foo', 'r') as f
with a_lock
f.read()
frobnicate()
I guess the issue is that there is less of a clear idea of scope in Python, what does the above construct do at a module level? What does it do inside another with block? A lot of special rules that don't conveniently fit into something else unlike what I suppose C# has.