[Python-Dev] adding Construct to the standard library?

Travis Oliphant oliphant.travis at ieee.org
Wed Apr 19 02:09:39 CEST 2006


Giovanni Bajo wrote:
> tomer filiba <tomerfiliba at gmail.com> wrote:
> 
> 
>>the point is -- ctypes can define C types. not the TCP/IP stack.
>>Construct can do both. it's a superset of ctype's typing mechanism.
>>but of course both have the right to *coexist* --
>>ctypes is oriented at interop with dlls, and provides the mechanisms
>>needed for that.
>>Construst is about data structures of all sorts and kinds.
>>
>>ctypes is a very helpful library as a builtin, and so is Construct.
>>the two don't compete on a spot in the stdlib.
> 
> 
> 
> I don't agree. Both ctypes and construct provide a way to describe a
> binary-packed structure in Python terms: and this is an overload of
> functionality. When I first saw Construct, the thing that crossed my head was:
> "hey, yet another syntax to describe a binary-packed structure in Python".
> ctypes uses its description to interoperate with native libraries, while
> Construct uses its to interoperate with binary protocols. I didn't see a good
> reason why you shouldn't extend ctypes so to provide features that it is
> currently missing. It looks like it could be easily extended to do so.
> 

For what it's worth,  NumPy also defines a data-type object which it 
uses to describe the fundamental data-type of an array.  In the context 
of this thread it is also yet another way to describe a binary-packed 
structure in Python.

This data-type object is a builtin object which provides information 
such as byte-order, element size, "kind" as well as the notion of fields 
so that nested structures can be easily defined.

Soon (over the next six months) a basic array object (a super class of 
NumPy) will be proposed for inclusion in Python.   When that happens 
some kind of data-type object (a super class of the NumPy dtype object) 
will be needed as well.

I think some cross-talk between all of us different users of the notion 
of what we in the NumPy community call a data-type might be useful.



-Travis Oliphant



More information about the Python-Dev mailing list