'''
Module for save patterns registered for local persistence
'''
[docs]__author__ = 'Elisha Yadgaran'
from typing import Any
from simpleml.save_patterns.decorators import SavePatternDecorators
from simpleml.save_patterns.base import BaseSavePattern
[docs]@SavePatternDecorators.register_save_pattern
class DiskPickleSavePattern(BaseSavePattern):
'''
Save pattern implementation to save objects to disk in pickled format
'''
[docs] SAVE_PATTERN = 'disk_pickled'
@classmethod
[docs] def save(cls, obj: Any, persistable_id: str, **kwargs) -> str:
'''
Save method to save files to disk in pickled format
'''
filename = f'{persistable_id}.pkl'
cls.pickle_object(obj, filename)
return filename
@classmethod
[docs] def load(cls, filename: str, **kwargs) -> Any:
'''
Load method to load files from disk in pickled format
'''
return cls.load_pickled_object(filename)
[docs]@SavePatternDecorators.register_save_pattern
class DiskHDF5SavePattern(BaseSavePattern):
'''
Save pattern implementation to save objects to disk in HDF5 format with hickle
'''
[docs] SAVE_PATTERN = 'disk_hdf5'
@classmethod
[docs] def save(cls, obj: Any, persistable_id: str, **kwargs) -> str:
'''
Save method to save files to disk in hickle's HDF5 format
'''
filename = f'{persistable_id}.h5'
cls.hickle_object(obj, filename)
return filename
@classmethod
[docs] def load(cls, filename: str, **kwargs) -> Any:
'''
Load method to load files from disk in hickle's HDF5 format
'''
return cls.load_hickled_object(filename)
[docs]@SavePatternDecorators.register_save_pattern
class KerasDiskHDF5SavePattern(BaseSavePattern):
'''
Save pattern implementation to save objects to disk in Keras's HDF5 format
Keras's internal persistence mechanism utilizes HDF5 and implements a custom pattern
'''
[docs] SAVE_PATTERN = 'disk_keras_hdf5'
@classmethod
[docs] def save(cls, obj: Any, persistable_id: str, **kwargs) -> str:
'''
Save method to save files to disk in Keras's HDF5 format
'''
filename = f'{persistable_id}.h5'
cls.save_keras_object(obj, filename)
return filename
@classmethod
[docs] def load(cls, filename: str, **kwargs) -> Any:
'''
Load method to load files from disk in Keras's HDF5 format
'''
return cls.load_keras_object(filename)