[Python-Dev] Terminology for PEP 343 (original) (raw)
Raymond Hettinger python at rcn.com
Mon Jul 4 05:48:31 CEST 2005
- Previous message: [Python-Dev] Terminology for PEP 343
- Next message: [Python-Dev] Terminology for PEP 343
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> The mechanism is more general than resource >management. Like decorators, the encapsulation of a try/finally wrapper >is completely generic and not married to the resource management >context.
[Phillip]
Expand your mind. :) "Resource" can include whatever objects you want it to -- or no objects at all.
There is no value in expanding a concept to the point of being meaningless (i.e. meaning whatever you want it to or nothing at all). Instead, we need a phrase that expresses the essence of the following:
abc = EXPR
exc = (None, None, None)
VAR = abc.__enter__()
try:
try:
BLOCK
except:
exc = sys.exc_info()
raise
finally:
abc.__exit__(*exc)
There is nothing in that that says resource managed. The pre/post steps could do almost anything from logging, to changing environments, to translating, launching/joining unrelated threads, to communicating with other processes, etc.
Ideally, the phrase needs to fit in a list of all of the other properties of the abc object (i.e. abc objects are callable, iterable, support the buffer interface, and are withable or somesuch).
Another trouble with "resource managed" is that it makes little sense even when describing something that is clearly a resource (for instance, "locking objects are resource managed", what the heck could that mean, there is no hint about the presence of enter and exit or the ability to work with the "with" keyword). The phrase does nothing but suggest a particular application that historically has been implemented without the new mechanism.
Of course, what makes this exercise hard is that our two new keywords are prepositions and the process that they apply to is somewhat abstract.
Raymond
P.S. I would still like to encourage the adoption of leave instead of exit. The first suggests part of an enter/leave pair. The latter could too easily be taken as a standalone. If everyone doesn't see the subtle reasons why leave is better, then at least consider beginwith and endwith which say exactly what they mean and are obviously paired with each other and with the new keyword. Remember, these methods are going to show up in objects such as Context which are not primarily about 343. All of the other methods names will have nothing to do with 343, so our choice of magic names needs to be really good (as there will likely be NO contextual hints).
- Previous message: [Python-Dev] Terminology for PEP 343
- Next message: [Python-Dev] Terminology for PEP 343
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]