@@ -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