(original) (raw)


On Aug 24, 2010, at 8:31 AM, Benjamin Peterson wrote:

2010/8/24 Hrvoje Niksic <hrvoje.niksic@avl.com>:
The \_\_length\_hint\_\_ lookup expects either no exception or AttributeError,
and will propagate others.  I'm not sure if this is a bug.  On the one hand,
throwing anything except AttributeError from \_\_getattr\_\_ is bad style (which
is why we fixed the bug by deriving our business exception from
AttributeError), but the \_\_length\_hint\_\_ check is supposed to be an internal
optimization completely invisible to the caller of list().

\_\_length\_hint\_\_ is internal and undocumented, so it can do whatever it wants.

As it happens though, list() is \_quite\_ public.  Saying "X is internal and undocumented, so it can do whatever it wants" is never really realistic, especially in response to someone saying "we already saw this problem in production, \_without\_ calling / referring to / knowing about this private API".