From 85fcff131ae4c9b07bc7ad8ca63e9a63d8a766a0 Mon Sep 17 00:00:00 2001 From: Theo Steininger <theos@mpa-garching.mpg.de> Date: Mon, 6 Mar 2017 03:07:27 +0100 Subject: [PATCH] Fixed bugs serialization. Increased version number to 3.0.4 --- nifty/field.py | 12 ++++++++++-- nifty/field_types/field_array.py | 8 +++----- nifty/version.py | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/nifty/field.py b/nifty/field.py index a6b02f394..3e33e44fd 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 3f937ac17..3afb04ec3 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 04b23a243..7cba59a61 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' -- GitLab