diff --git a/DataProcessingTools/objects.py b/DataProcessingTools/objects.py index 985c8bd..e32b25f 100644 --- a/DataProcessingTools/objects.py +++ b/DataProcessingTools/objects.py @@ -49,42 +49,48 @@ class DPObject(): def __init__(self, *args, **kwargs): fname = kwargs.get("loadFrom", None) + _dirs = kwargs.get("dirs") if fname is not None: self.load(fname=fname) else: - self.args = {} - # process positional arguments - # TODO: We need to somehow consume these, ie. remove the processed ones - pargs = [p for p in filter(lambda t: not isinstance(t, tuple), type(self).argsList)] - qargs = pargs.copy() - for (k, v) in zip(pargs, args): - self.args[k] = v - qargs.remove(k) - # run the remaining throgh kwargs - for k in qargs: - if k in kwargs.keys(): - self.args[k] = kwargs[k] - - # process keyword arguments - kargs = filter(lambda t: isinstance(t, tuple), type(self).argsList) - for (k, v) in kargs: - self.args[k] = kwargs.get(k, v) - - redoLevel = kwargs.get("redoLevel", 0) - saveLevel = kwargs.get("saveLevel", 0) - fname = self.get_filename() - verbose = kwargs.get("verbose", 1) - if redoLevel == 0 and os.path.isfile(fname): - self.load(fname) - if verbose > 0: - print("Object loaded from file {0}".format(fname)) + if self.level is not None and _dirs != []: + ldir = levels.resolve_level(self.level) else: - # create object - self.create(*args, **kwargs) - if self.dirs and saveLevel > 0: - self.save() + ldir = os.getcwd() + with misc.CWD(ldir): + self.args = {} + # process positional arguments + # TODO: We need to somehow consume these, ie. remove the processed ones + pargs = [p for p in filter(lambda t: not isinstance(t, tuple), type(self).argsList)] + qargs = pargs.copy() + for (k, v) in zip(pargs, args): + self.args[k] = v + qargs.remove(k) + # run the remaining throgh kwargs + for k in qargs: + if k in kwargs.keys(): + self.args[k] = kwargs[k] + + # process keyword arguments + kargs = filter(lambda t: isinstance(t, tuple), type(self).argsList) + for (k, v) in kargs: + self.args[k] = kwargs.get(k, v) + + redoLevel = kwargs.get("redoLevel", 0) + saveLevel = kwargs.get("saveLevel", 0) + fname = self.get_filename() + verbose = kwargs.get("verbose", 1) + if redoLevel == 0 and os.path.isfile(fname): + self.load(fname) if verbose > 0: - print("Object saved to file {0}".format(fname)) + print("Object loaded from file {0}".format(fname)) + else: + # create object + self.create(*args, **kwargs) + if self.dirs and saveLevel > 0: + self.save() + if verbose > 0: + print("Object saved to file {0}".format(fname)) def create(self, *args, **kwargs): self.dirs = kwargs.get("dirs", [os.getcwd()]) diff --git a/setup.py b/setup.py index 98f2ceb..8cf3a63 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from distutils.core import setup setup(name="DataProcessingTools", - version="0.18.0", + version="0.19.0", description="""Tools for processing data with hierarchical organization""", url="https://github.com/grero/DataProcessingTools.git", author="Roger Herikstad",