
Modifying the fundamental tuples for doing that is certainly overkill - but maybe a context-helper function in contextlib that would proper handle all the corner cases of some code as I've pasted now at:
https://gist.github.com/jsbueno/53c059380be042e2878c08b5c10f36bf (the link above actually have working code to implement the OP sugestion as a generator-function)
Not it is easier to use than contextlib.ExitStack https://docs.python.org/3/library/contextlib.html#contextlib.ExitStack
Note that for literal, hard coded tuples with known size, this is not needed at all - just spell the `with resource as bla, resource2 as ble: ` syntax works - and, for an arbitrary number of resources "tuple" hardly would be the more appropriate type to use anyway.
js -><-
On Fri, 12 Jul 2019 at 10:57, Anders Hovmöller boxed@killingar.net wrote:
You should expand a bit. How is that better than
with open(..) as a, open(..) as b:
?
On 12 Jul 2019, at 15:27, haael haael@interia.pl wrote:
Could we add __enter__ and __exit__ to the tuple type?
Look at the following code:
a = open('a.tmp', 'w') b = open('b.tmp', 'w')
with (a, b) as (af, bf): af.write("1") bf.write("2")
Even better example:
with tuple(open(str(_n) + '.tmp', 'w') for _n in range(1000)) as f: for n, fn in enumerate(f): f.write(str(n))
Tuple as context manager would invoke __enter__ for each of its elements
and return a tuple of the results.
On exit, the __exit__ method would be invoked for every element.
We could even generalize it to every kind of iterable.
This is somewhat consistent with treatment of exception types in
'except' clause.
try: something() except Exception1 as error: handlerA(error) except (Exception2, Exception3) as error: handlerB(error)
Tuple of exception types is accepted in 'except' clause, as well as a
single exception type. We could apply that rule to the 'with' clause.
Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at
https://mail.python.org/archives/list/python-ideas@python.org/message/QCYHV6...
Code of Conduct: http://python.org/psf/codeofconduct/
Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/YC3RJ6... Code of Conduct: http://python.org/psf/codeofconduct/