Skip to content

Commit 9264074

Browse files
committed
fix #702 : fixed bug when writing metadata using HDF format
1 parent 99745df commit 9264074

File tree

4 files changed

+19
-9
lines changed

4 files changed

+19
-9
lines changed

doc/source/changes/version_0_30.rst.inc

+4
Original file line numberDiff line numberDiff line change
@@ -285,3 +285,7 @@ Fixes
285285
of the API Reference (closes :issue:`698`).
286286

287287
* fixed arithmetic operations between two sessions returning a nan value for each axis and group (closes :issue:`725`).
288+
289+
* fixed dumping sessions with metadata in HDF format (closes :issue:`702`).
290+
291+
* fixed minimum version of pandas to install. The minimum version is now 0.20.0.

larray/core/metadata.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,15 @@ def _convert_value(value):
168168
return Metadata([(key, _convert_value(value)) for key, value in zip(array.axes.labels[0], array.data)])
169169

170170
# ---------- IO methods ----------
171-
def to_hdf(self, hdfstore, key):
171+
def to_hdf(self, hdfstore, key=None):
172172
if len(self):
173-
hdfstore.get_storer(key).attrs.metadata = self
173+
attrs = hdfstore.get_storer(key).attrs if key is not None else hdfstore.root._v_attrs
174+
attrs.metadata = self
174175

175176
@classmethod
176-
def from_hdf(cls, hdfstore, key):
177-
if 'metadata' in hdfstore.get_storer(key).attrs:
178-
return hdfstore.get_storer(key).attrs.metadata
177+
def from_hdf(cls, hdfstore, key=None):
178+
attrs = hdfstore.get_storer(key).attrs if key is not None else hdfstore.root._v_attrs
179+
if 'metadata' in attrs:
180+
return attrs.metadata
181+
else:
182+
return None

larray/inout/hdf.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,13 @@ def _dump_item(self, key, value, *args, **kwargs):
143143
raise TypeError()
144144

145145
def _read_metadata(self):
146-
attrs = self.handle.get_node('')._v_attrs
147-
return attrs.metadata if 'metadata' in attrs else Metadata()
146+
metadata = Metadata.from_hdf(self.handle)
147+
if metadata is None:
148+
metadata = Metadata()
149+
return metadata
148150

149151
def _dump_metadata(self, metadata):
150-
self.handle.get_node('')._v_attrs.metadata = metadata
152+
metadata.to_hdf(self.handle)
151153

152154
def close(self):
153155
self.handle.close()

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def readlocal(fname):
1616
LONG_DESCRIPTION = readlocal("README.rst")
1717
SETUP_REQUIRES = []
1818
# excludes numpy 1.16.* because it is incompatible with pytables < 3.5
19-
INSTALL_REQUIRES = ['numpy >= 1.13, != 1.16.*', 'pandas >= 0.13.1']
19+
INSTALL_REQUIRES = ['numpy >= 1.13, != 1.16.*', 'pandas >= 0.20.0']
2020
TESTS_REQUIRE = ['pytest', 'pytest-pep8']
2121

2222
LICENSE = 'GPLv3'

0 commit comments

Comments
 (0)