diff --git a/datajoint/dependencies.py b/datajoint/dependencies.py index 3ca943a35..abc42c84d 100644 --- a/datajoint/dependencies.py +++ b/datajoint/dependencies.py @@ -1,6 +1,19 @@ from collections import defaultdict import pyparsing as pp from . import DataJointError +from functools import wraps + +def load_dependencies(func): + """ + Decorator that ensures that dependencies are loaded + """ + + @wraps(func) + def f(*args, **kwargs): + args[0].load() + return func(*args, **kwargs) + return f + class Dependencies: @@ -17,20 +30,25 @@ def __init__(self, conn): self._children = defaultdict(list) self._references = defaultdict(list) + @property + @load_dependencies def parents(self): return self._parents @property + @load_dependencies def children(self): return self._children @property + @load_dependencies def references(self): return self._references @property + @load_dependencies def referenced(self): return self._referenced