generic_decorators: Added the decorators metaclass and metaclasses. Both apply a metaclass(es) to a class given and replace it by an updated result.
generic_decorators: Added the decorator class_static_variables, which uses a metaclass to add static variable to a class provided.
generic_decorators: Added class_decorate_all_methods, which will decorate all class methods of a given class with the given decorators.
generic_decorators: Added class_decorate_methods, which decorates selected methods that are specifed. If the method does not exist, it fails silently.
debugging_tools: Changed to use tools from generic_decorators make code shorter and more flexible.
HDF5_recorder: Added a function, static_array_debug_recorder, to construct a decorator, which adds the static variable, array_debug_recorder, to the decorated function.
HDF5_recorder: Provides subgrouping recorders.
HDF5_recorder: Created the ArrayRecorder, HDF5EnumeratedArrayRecorder, this uses an enumeration system to allow storing separate results with the same sort of name.
HDF5_recorder: Provides the new HDF5EnumeratedArrayRecorder, which stores every result in a group with numbered entried in increasing order. Retrieval yields the most recent one or an exception if it does not exist. Switched all __call__ methods to __setitem__ as the recorders are behaving more like dictionaries it would be better to remain consistent with that interface. Tweaked generate_HDF5_array_recorder so as to allow selection of different types of recorders. Tweaked static_subgrouping_array_recorders, which decorates a given callable, so that on each call it refreshes the recorder before running the callable.
HDF5_recorder: Added class_static_subgrouping_array_recorders and class_static_array_debug_recorder. These decorate a whole class so that all members have access to a recorder that is instance dependent. The recorder can be used in exactly the same way it was for a function. Except, to initialize a new recorder, it must simply be assigned to the class static variable. The rest of the work is done in the background.
HDF5_recorder: Added code to HDF5EnumeratedArrayRecorder to set an attribute for each group key to specify whether it is a logger or data. Allows persistence across different Python sessions or different logger instances.
This is the culmination of work required to address #75.
advanced_image_processing: Updates to use ArrayRecorder dictionary style of storage. Also, removed the array_debug_recorder from parameters and added a decorator instead, which provides access to the array_debug_recorder through a static variable. Configures functions beneath it to use an array_debug_recorder of the same kind in a subgroup.
nanshe_learner: Modified construction of resume_logger and array_debug_recorder to follow new constraints from HDF5_recorder. Updates to use ArrayRecorder dictionary style of storage. Also, removed the array_debug_recorder from parameters and added a decorator instead, which provides access to the array_debug_recorder through a static variable. Configures functions beneath it to use an array_debug_recorder of the same kind in a subgroup.
wavelet_transform: Updates to use ArrayRecorder dictionary style of storage. Also, removed the array_debug_recorder from parameters and added a decorator instead, which provides access to the array_debug_recorder through a static variable. Configures functions beneath it to use an array_debug_recorder of the same kind in a subgroup.