diff --git a/nifty/field.py b/nifty/field.py index a6b02f39431d198b6377d19c7199084a45e4647d..3e33e44fdf3af8426ba74235eaf833e66c9a94b0 100644 --- a/nifty/field.py +++ b/nifty/field.py @@ -836,7 +836,10 @@ class Field(Loggable, Versionable, object): hdf5_group.attrs['domain_axes'] = str(self.domain_axes) hdf5_group['num_domain'] = len(self.domain) - ret_dict = {'val': self.val} + if self._val is None: + ret_dict = {} + else: + ret_dict = {'val': self.val} for i in range(len(self.domain)): ret_dict['s_' + str(i)] = self.domain[i] @@ -856,7 +859,12 @@ class Field(Loggable, Versionable, object): new_field.domain = tuple(temp_domain) exec('new_field.domain_axes = ' + hdf5_group.attrs['domain_axes']) - new_field._val = repository.get('val', hdf5_group) + + try: + new_field._val = repository.get('val', hdf5_group) + except(KeyError): + new_field._val = None + new_field.dtype = np.dtype(hdf5_group.attrs['dtype']) new_field.distribution_strategy =\ hdf5_group.attrs['distribution_strategy'] diff --git a/nifty/field_types/field_array.py b/nifty/field_types/field_array.py index 3f937ac1754fe332a073aad60dcec5b3819a5436..3afb04ec38e768624d82668794c9654316f2c6f3 100644 --- a/nifty/field_types/field_array.py +++ b/nifty/field_types/field_array.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- -import pickle - import numpy as np from field_type import FieldType @@ -29,14 +27,14 @@ class FieldArray(FieldType): def _to_hdf5(self, hdf5_group): hdf5_group['shape'] = self.shape - hdf5_group['dtype'] = pickle.dumps(self.dtype) + hdf5_group.attrs['dtype'] = self.dtype.name return None @classmethod def _from_hdf5(cls, hdf5_group, loopback_get): result = cls( - hdf5_group['shape'][:], - pickle.loads(hdf5_group['dtype'][()]) + shape=hdf5_group['shape'][:], + dtype=np.dtype(hdf5_group.attrs['dtype']) ) return result diff --git a/nifty/version.py b/nifty/version.py index 04b23a2437b25d14313adee1b1f875608d44efd5..7cba59a61282fdc84c0d05ddac9a6380194747be 100644 --- a/nifty/version.py +++ b/nifty/version.py @@ -4,4 +4,4 @@ # 1) we don't load dependencies by storing it in __init__.py # 2) we can import it in setup.py for the same reason # 3) we can import it into your module module -__version__ = '3.0.3' +__version__ = '3.0.4'