On 1/6/07, Travis Oliphant <[EMAIL PROTECTED]> wrote:

Tim Hochberg wrote:
> Christopher Barker wrote:
>
> [SNIP]
>
>> I think the PEP has far more chances of success if it's seen as a
>> request from a variety of package developers, not just the numpy crowd
>> (which, after all, already has numpy
>>
> This seems eminently sensible. Getting a few developers from other
> projects on board would help a lot; it might also reveal some
> deficiencies to the proposal that we don't see yet.
>
It would help quite a bit.  Are there any suggestions of who to recruit
to review the proposal?


Before I can answer that, I need to ask you a question. How do you see this
extension to the buffer protocol? Do you see it as an supplement to the
earlier array protocol, or do you see it as a replacement?

The reason that I ask is that the two projects that I use regularly are
wxPython and PIL generally operate on relatively large data chunks and it's
not clear that they would see much benefit over this mechanism versus the
array protocol.

I imagine that between us Chris Barker and I could hack together something
for wxPython (not that I've asked him aout it). And code would probably go a
long way to convincing people what a great idea this is. However, all else
being equal, it'd be a lot easier to do this for the array protocol since
there's no extra infrastructure involved.

[SNIP]

         1. Why do we need Py_ARRAYOF? Can't we get the same effect just
>             using longer shape and strides arrays?
>
Yes, this is true for a single data-format in isolation (and in fact
exactly what you get when you instantiate in NumPy a data-type that is
an array of another primitive data-type).   However, how do you describe
a structure whose second field is an array of a primitive type?  This is
where the ARRAYOF qualifier is needed.  In NumPy, actually, it's not
done this way, but a separate subarray field in the data-type object is
used.  After studying c-types,  however, I think this approach is better.


OK,. Needed for recursive data structures, check.


         2. Is there any type besides Py_STRUCTURE that can have names
>             and fields. If so, what and what do they mean. If not, you
>             should just say that.
>
Yes, you can add fields to a multi-byte primitive if you want.  This
would be similar to thinking about the data-format as a C-like union.
Perhaps the data-field has meaning as a 4-byte integer but the
most-significant and least-significant bytes should also be addressable
individually.


Hmm. I think I understand this somewhat better now, but I can't decide if
it's cool or overkill. Is this a supporting a feature that ctypes has?


         3. And on this topic, why a tuple of ([names,..], {field})? Why
>             not simply a list of (name, dfobject, offset, meta) for
>             example? And what's the meta information if it's not PyNone?
>             Just a string? Anything at all?
>

The list of names is useful for having an ordered list so you can
traverse the structure in field order.   It is technically not necessary
but it makes it a lot easier to parse a data-format object in offset
order (it is used a bit in NumPy, for example).


Right, I got that. Between names and field you are simulating an ordered
dict. What I still don't understand is why you chose to simulate this
ordered dict using a list plus a dictionary rather than a list of tuples.
This may well just be a matter of taste. However, for the small sizes I'd
expect of these lists I would expect a list of of tuples would perform
better than the dictionary solution.


The meta information is a place holder for field tags and future growth
(kind of like column headers in a spreadsheet).  It started as a place
to put a "longer" name or to pass along information about a field (like
units) through.

OK.

FWIW, the array protocol PEP seems more relevant to what I do since I'm not
concerned so much with the overhead since I'm sending big chunks of data
back and forth.

-tim
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to