Skip to content

Commit f6da47b

Browse files
committed
move make kwargs implementation to _populate1
1 parent d8637db commit f6da47b

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

datajoint/autopopulate.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,10 @@ def populate(self, *restrictions, suppress_errors=False, return_exception_object
130130
reserve_jobs=False, order="original", limit=None, max_calls=None,
131131
display_progress=False, processes=1, make_kwargs=None):
132132
"""
133-
table.populate() calls table.make(key) for every primary key in self.key_source
134-
for which there is not already a tuple in table.
135-
:param restrictions: a list of restrictions each restrict
133+
``table.populate()`` calls ``table.make(key)`` for every primary key in
134+
``self.key_source`` for which there is not already a tuple in table.
135+
136+
:param restrictions: a list of restrictions each restrict
136137
(table.key_source - target.proj())
137138
:param suppress_errors: if True, do not terminate execution.
138139
:param return_exception_objects: return error objects instead of just error messages
@@ -143,8 +144,10 @@ def populate(self, *restrictions, suppress_errors=False, return_exception_object
143144
:param display_progress: if True, report progress_bar
144145
:param processes: number of processes to use. When set to a large number, then
145146
uses as many as CPU cores
146-
:param make_kwargs: optional dict containing keyword arguments that will be
147-
passed down to each make() call
147+
:param make_kwargs: Keyword arguments which do not affect the result of computation
148+
to be passed down to each ``make()`` call. Computation arguments should be
149+
specified within the pipeline e.g. using a `dj.Lookup` table.
150+
:type make_kwargs: dict, optional
148151
"""
149152
if self.connection.in_transaction:
150153
raise DataJointError('Populate cannot be called during a transaction.')
@@ -178,7 +181,8 @@ def handler(signum, frame):
178181
error_list = []
179182
populate_kwargs = dict(
180183
suppress_errors=suppress_errors,
181-
return_exception_objects=return_exception_objects)
184+
return_exception_objects=return_exception_objects,
185+
make_kwargs=make_kwargs)
182186

183187
if processes == 1:
184188
for key in tqdm(keys, desc=self.__class__.__name__) if display_progress else keys:
@@ -209,7 +213,7 @@ def handler(signum, frame):
209213
if suppress_errors:
210214
return error_list
211215

212-
def _populate1(self, key, jobs, suppress_errors, return_exception_objects):
216+
def _populate1(self, key, jobs, suppress_errors, return_exception_objects, make_kwargs=None):
213217
"""
214218
populates table for one source key, calling self.make inside a transaction.
215219
:param jobs: the jobs table or None if not reserve_jobs
@@ -230,7 +234,7 @@ def _populate1(self, key, jobs, suppress_errors, return_exception_objects):
230234
logger.info('Populating: ' + str(key))
231235
self.__class__._allow_insert = True
232236
try:
233-
make(dict(key))
237+
make(dict(key), **(make_kwargs or {}))
234238
except (KeyboardInterrupt, SystemExit, Exception) as error:
235239
try:
236240
self.connection.cancel_transaction()

0 commit comments

Comments
 (0)