Feature suggestions: "Using declarations" i.e. context managers ("with" blocks) tied to scope/lifetime of the variable rather than to nesting

2019-02-19 Thread mnl.p...@gmail.com
I thought this new C# feature would be a good thing to add to Python:
https://vcsjones.com/2019/01/30/csharp-8-using-declarations/

I find the nesting required by context managers to be at odds with the
broad intent.

The code indentation in python should reflect the program logic and
flow as much as possible, but for thing, the context manager generally
doesn't apply to most of the code it forces to be indented, but only
to a few lines using the resource; for another, even for those lines,
the context manager is usually not reflective of the flow anyway
(unlike the classic control statements, such as for/next, if/else, and
while).
for example:
with xx.open() as logfile:
 do this
 do that
 logfile.write()
 do this
 do that
 logfile.write()

This becomes more ugly if multiple withs get nested.
-- 
https://mail.python.org/mailman/listinfo/python-list


Feature suggestion: "Using declarations" i.e. context managers ("with" blocks) tied to scope/lifetime of the variable rather than to nesting

2019-02-21 Thread mnl.p...@gmail.com
(I sent this a few days ago but got bounced without a reason—don’t see it
posted, so I’m trying one more time.)


I thought this new C# feature would be a good thing to add to Python:
https://vcsjones.com/2019/01/30/csharp-8-using-declarations/

The nesting required by context managers can be at odds with a program’s
real structure.  The code indentation in python should reflect the program
logic and flow as much as possible, but for one thing, the context manager
generally doesn't apply to most of the code it forces to be indented, but
only to a few lines using the resource; for another, even for those
lines, the context manager is usually not reflective of the flow
anyway (unlike the classic control statements, such as for/next, if/else,
and while).

for example:
with xx.open() as logfile:
 do this
 do that
 logfile.write()
 with  as dbs_conn:
  do this
  do that
  logfile.write()
Things like dbs_conn are functioning as just a variable (albeit one wants
assurance its object will be determinstically destroyed)—the indentation
reflects the span of lines the variable is being used (held open), but
shouldn’t change the structure for that reason.

(This is uglier as additional withs get nested.)
-- 
https://mail.python.org/mailman/listinfo/python-list