<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 27, 2019 at 1:37 AM Hameer Abbasi <<a href="mailto:einstein.edison@gmail.com">einstein.edison@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">    <div style="font-family:Helvetica;color:rgb(0,0,0);font-size:13px"><div id="gmail-m_4496342785235859248CanaryBody"> <div> Cc-ing in Travis, because he was the original author of the buffer protocol, and this is most definitely related.</div> <div><br></div> </div> <div id="gmail-m_4496342785235859248CanarySig"> <div> <div style="font-family:Helvetica;color:rgb(0,0,0);font-size:13px">Best Regards,<div>Hameer Abbasi</div></div> <div><br></div> </div> </div> <div id="gmail-m_4496342785235859248CanaryDropbox"> </div> <blockquote id="gmail-m_4496342785235859248CanaryBlockquote"> <div> <div>On Wednesday, Feb 27, 2019 at 9:20 AM, Matti Picus <<a href="mailto:matti.picus@gmail.com" target="_blank">matti.picus@gmail.com</a>> wrote:<br></div> <div>In digging around the code, I found a gem in PyArray_FromBuffer (exposed <br>to python as numpy.frombuffer). If a PyObject* does not have a <br>tp_as_buffer->bf_getbuffer function, we check if the python object has a <br>__buffer__ attribute. If so we use that as buf in <br>PyObject_GetBuffer(buf, ...). <br> <br> <br>This seems to stem back to the original numerics code, where getBuffer <br>would look up the attribute and call it as a method. PyArray_FromBuffer <br>does not call the attribute as a method, it simply passes it on to <br>PyObject_GetBuffer, which will then raise an error saying it cannot <br>convert a method. You can try this out by creating a class with a <br>__buffer__ method and calling numpy.frombuffer on it. <br> <br> <br>I submitted a pull request to remove the code. Since it is undocumented <br>and (as far as I can tell) broken, I do not think we need a deprecation <br>cycle. <br></div></div></blockquote></div></blockquote><div><br></div><div>I vaguely recall using that many, many years ago for some C code, but don't see anything using it these days.</div><div><br></div><div>Chuck </div></div></div>