Fixed indexing issue with multiple packets. Calculation for heap completeness should be based on zero indexing of offset.
Added support for direct numpy format pack and unpack. A descriptor will use the numpy transport when initialised with a valid numpy array as the ndarray argument. If the init_val has a valid numpy type this will also work. The numpy_test highlights differences in speed when using the std transport vs the numpy transport.
Allow creation of numpy descriptor from a dtype,shape tuple as well as from an existing array. Added example to numpy_test of this approach.
Fix for incorrect 8 byte offsets. Added default _changed to False in Item init (fixes sending empty descriptors)
SPEAD header now matches specification and a subtle but nasty bug fix

The SPEAD header had an incorrect magic number 0x83 instead of 0x53 and did not have
the correct fileds for item pointer width (3) and heap addr width (5).

It was found that changing the magic number broke SPEAD and this was eventually
tracked down to a subtle back related to the new magic number not having the MSB set.

In some cases the header was accidently decoded as an item and interpreted as being
a direct addressed item which broke the packet linkage further down. Basically
just an off by one error but darn subtle....
Removed a few spurious print statements.
Testing multiple heap handling

In order to support multiple concurrent X engines we need to handle a number
of simultaneously active heaps. This is a simple, probably not very high performance,
fix for this issue.
Keep track of partially completed heaps and age them out once we have too many.

A constant, MAX_CONCURRENT_HEAPS, currently set to 16 is checked each time
a new heap is allocated. If we exceed this number of currently active heaps,
the oldest heap is pop'd out of the list and unpacking is attempted.
One transmission end, process any stale heaps.
Bugfix for unpacking Items with < 40 bits.

Error caused by passing offsets >= 8 to spead.unpack in Item unpacking.  This happened for Items < 40 bits long.  Fix was, when offsets >= 8, to remove whole bytes from binary string.  Added test that exposes this bug, along with the fix.
Added wireshark plugin to ease SPEAD debugging.

Wireshark dissector that shows the header and items for a SPEAD packet.
To build from source copy into the wireshark source plugin directory and modify the
following files to include a reference to the plugin:

plugins/Makefile.in
plugins/Makefile.am
Makefile.in
configure.in

then autogen / configure / make
Merge branch 'master' of http://github.com/sratcliffe/PySPEAD
Fix for out of order heap fragments

If the first received heap fragment was not at offset zero then subsequent low numbered fragments
got discarded. This caused intermittent heap drops.
Cleaned up end of stream a little to make sure halt is sent before stream is shutdown.
Added support for a string datatype. This can be constructed using mkfmt(('s',8)) and using shape=-1 when adding an item. Note: At the moment you can't mix datatypes in the mkfmt string.
Update to revision 0.5.0 in order to synchronise pypi and github better (pypi was at 0.4 and github at 0.3), and we do have new changes since the 0.3/0.4 debacle
Added update for 0.5 section
heap discard bug fix

When the maximum number of incomplete heaps was reached, the oldest
heap (using heap_times) should be discarded.
Merge branch 'master' of https://github.com/ska-sa/PySPEAD
Variable length string type no longer returns a list, just the naked string

Small fix that is required to better sanitise the use of variable and fixed
length strings in the some code.