<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Apr 24, 2017 at 7:41 PM, Nathaniel Smith <span dir="ltr"><<a href="mailto:njs@pobox.com" target="_blank">njs@pobox.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">But also, is it important whether strings we're loading/saving to an<br>
HDF5 file have the same in-memory representation in numpy as they<br>
would in the file? I *know* [1] no-one is reading HDF5 files using<br>
np.memmap :-).</blockquote><div><br></div><div>Of course they do :)</div><div><a href="https://github.com/jjhelmus/pyfive/blob/98d26aaddd6a7d83cfb189c113e172cc1b60d5f8/pyfive/low_level.py#L682">https://github.com/jjhelmus/pyfive/blob/98d26aaddd6a7d83cfb189c113e172cc1b60d5f8/pyfive/low_level.py#L682</a><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Also, further searching suggests that HDF5 actually supports all of<br>
nul termination, nul padding, and space padding, and that nul<br>
termination is the default? How much does it help to have in-memory<br>
compatibility with just one of these options (and not even the default<br>
one)? Would we need to add the other options to be really useful for<br>
HDF5?</blockquote><div><br></div><div>h5py actually ignores this option and only uses null termination. I have not heard any complaints about this (though I have heard complaints about the lack of fixed-length UTF-8).</div><div><br></div>But more generally, you're right. h5py doesn't need a corresponding NumPy dtype for each HDF5 string dtype, though that would certainly be <i>convenient</i>. In fact, it already (ab)uses NumPy's dtype metadata with h5py.special_dtype to indicate a homogeneous string type for object arrays.</div><div class="gmail_quote"><br></div><div class="gmail_quote">I would guess h5py users have the same needs for efficient string representations (including surrogate-escape options) as other scientific users. </div></div></div>