summaryrefslogtreecommitdiff
path: root/numpy/lib/format.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/lib/format.py')
-rw-r--r--numpy/lib/format.py24
1 files changed, 11 insertions, 13 deletions
diff --git a/numpy/lib/format.py b/numpy/lib/format.py
index 1a2133aa9..a0405b310 100644
--- a/numpy/lib/format.py
+++ b/numpy/lib/format.py
@@ -314,21 +314,19 @@ def _write_array_header(fp, d, version=None):
header = header + ' '*topad + '\n'
header = asbytes(_filter_header(header))
- if len(header) >= (256*256) and version == (1, 0):
- raise ValueError("header does not fit inside %s bytes required by the"
- " 1.0 format" % (256*256))
- if len(header) < (256*256):
- header_len_str = struct.pack('<H', len(header))
+ hlen = len(header)
+ if hlen < 256*256 and version in (None, (1, 0)):
version = (1, 0)
- elif len(header) < (2**32):
- header_len_str = struct.pack('<I', len(header))
+ header_prefix = magic(1, 0) + struct.pack('<H', hlen)
+ elif hlen < 2**32 and version in (None, (2, 0)):
version = (2, 0)
+ header_prefix = magic(2, 0) + struct.pack('<I', hlen)
else:
- raise ValueError("header does not fit inside 4 GiB required by "
- "the 2.0 format")
+ msg = "Header length %s too big for version=%s"
+ msg %= (hlen, version)
+ raise ValueError(msg)
- fp.write(magic(*version))
- fp.write(header_len_str)
+ fp.write(header_prefix)
fp.write(header)
return version
@@ -389,7 +387,7 @@ def read_array_header_1_0(fp):
If the data is invalid.
"""
- _read_array_header(fp, version=(1, 0))
+ return _read_array_header(fp, version=(1, 0))
def read_array_header_2_0(fp):
"""
@@ -422,7 +420,7 @@ def read_array_header_2_0(fp):
If the data is invalid.
"""
- _read_array_header(fp, version=(2, 0))
+ return _read_array_header(fp, version=(2, 0))
def _filter_header(s):