On 13 February 2018 at 02:14, David Mertz <me...@gnosis.cx> wrote: > NumPy np.bool_ is specifically not a subclass of any np.int_. If it we're, > there would be an ambiguity between indexing with a Boolean array and an > array of ints. Both are meaningful, but they mean different things (mask vs > collection of indices). > > Do we have other examples a Python ABC that exists to accommodate something > outside the standard library or builtins? Even if not, NumPy is special... > the actual syntax for '@' exists primarily for that library!
collections.abc.Sequence and collections.abc.Mapping come to mind - the standard library doesn't tend to distinguish between different kinds of subscriptable objects, but it's a distinction some third party libraries and tools want to be able to make reliably. The other comparison that comes to mind would be the distinction between "__int__" ("can be coerced to an integer, but may lose information in the process") and "__index__" ("can be losslessly converted to and from a builtin integer"). Right now, we only define boolean coercion via "__bool__" - there's no mechanism to say "this *is* a boolean value that can be losslessly converted to and from the builtin boolean constants". That isn't a distinction the standard library makes, but it sounds like it's one that NumPy cares about (and NumPy was also the main driver for introducing __index__). Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/