[issue30554] Inaccessible attribute characters_written on OSError instances

2017-06-02 Thread R. David Murray
R. David Murray added the comment: Thank you for linking to that Xiang. I had a vague memory of that discussion but couldn't find it. No, there is no bug here, but there is a question of whether or not there *should* be a bug here (that is, is there a design bug) and if so how/where to fix i

[issue30554] Inaccessible attribute characters_written on OSError instances

2017-06-02 Thread Xiang Zhang
Xiang Zhang added the comment: Looking at the code and doc it seems it's by design. But it's good or not remains in question. The related discussion about the more general problem behind this issue is https://groups.google.com/d/msg/python-ideas/Kou5cYGjGQ8/oXEixwgiDwAJ. There is a workaround

[issue30554] Inaccessible attribute characters_written on OSError instances

2017-06-02 Thread R. David Murray
R. David Murray added the comment: That's actually a very good question. hasattr returns False, but is it supposed to be an invariant that if dir returns a string hasattr should return True and getattr should not return AttributeError? (Well, it might raise AttributeError from inside the att

[issue30554] Inaccessible attribute characters_written on OSError instances

2017-06-02 Thread Igor Kozyrenko (ikseek)
Igor Kozyrenko (ikseek) added the comment: So is it by design? cgitb library fails to create report if there are links to exceptions based on OSError on the stack because it tries to enumerate all it's attributes. -- ___ Python tracker

[issue30554] Inaccessible attribute characters_written on OSError instances

2017-06-02 Thread Xiang Zhang
Xiang Zhang added the comment: Actually the docs says "This attribute is available when using the buffered I/O classes from the io module", which means it's not always available since it depends on an inner field set or not. It's just like Python code: >>> class CW: ... def __get__(self,

[issue30554] Inaccessible attribute characters_written on OSError instances

2017-06-02 Thread Igor Kozyrenko (ikseek)
New submission from Igor Kozyrenko (ikseek): If I enumerate attributes on OSError instance with dir dir(OSError()) I see an 'characters_written' attribute (which is supposed to be defined on BlockingIOError according to docs). If I try to access it getattr(OSError(), 'characters_written') I get