With 2.4 support dropped I was going to suggest generally using the index machinery (maybe through `try: axes = operator.index(axes) except TypeError: ...` for such cases. This lets python bools slip past. It lets numpy scalar bools slip past too, but not python 0-d arrays. On first sight it seems to me like exactly what `__index__` should be good for, but I am not really certain that it is perfectly right.
To be honest I find the python behaviour with bools irritating because `np.arange(10)[np.array(True)]` would be (if it worked) most logically be `np.arange(10)`, but by python logic (also right now) `np.arange(10)[True] == 1`. (Same difference exists for 0-d arrays, already works but is an open issue)