(original) (raw)

On 4/26/2015 4:32 PM, Paul Sokolovsky wrote:
Then, is the only logic for proposing \_\_aenter\_\_ is to reinsure against  
a situation that someone starts to write async context manager, forgets  
that they write async context manager, and make an \_\_enter\_\_ method  
there. Then your implementation will announce that "async context  
manager lacks \_\_aenter\_\_", whereas "my" approach would announce  
"Async's manager \_\_enter\_\_ did not return awaitable value".

Again, is that the distinction you're shooting for, or do I miss
something?





Seems like the missing __aenter__ can easily be detected by the
interpreter at compile time, but the wrong type returned would be at
run time, or after a complex type-analysis done at compile time
(unlikely to be practical).



So I think you've nailed the distinction... but I'm not the expert.