@@ -228,7 +228,7 @@ def _bind_one(
228228 seed : Hashable ,
229229) -> T :
230230 try :
231- name = get_collection_name (child )
231+ prev_coll_name = get_collection_name (child )
232232 except KeyError :
233233 return child # Collection with no keys; e.g. Array of size 0
234234
@@ -241,11 +241,11 @@ def _bind_one(
241241 all_keys = dsk .get_all_external_keys ()
242242 else :
243243 dsk = ensure_dict (dsk )
244- prev_layers = {name : dsk }
245- prev_deps = {name : set ()}
244+ prev_layers = {prev_coll_name : dsk }
245+ prev_deps = {prev_coll_name : set ()}
246246 all_keys = dsk .keys ()
247247
248- replace_keys = all_keys - omit_keys
248+ clone_keys = all_keys - omit_keys
249249
250250 if blocker is not None :
251251 blocker_key = blocker .key
@@ -259,52 +259,53 @@ def _bind_one(
259259 try :
260260 deps_to_clone = set (child .__dask_layers__ ())
261261 except AttributeError :
262- deps_to_clone = {name }
262+ deps_to_clone = {prev_coll_name }
263263 deps_to_copy_verbatim = set ()
264264
265265 while deps_to_clone :
266- name = deps_to_clone .pop ()
267- new_name = clone_key (name , seed = seed )
268- if new_name in new_layers :
266+ prev_layer_name = deps_to_clone .pop ()
267+ new_layer_name = clone_key (prev_layer_name , seed = seed )
268+ if new_layer_name in new_layers :
269269 continue
270270
271- layer = prev_layers [name ]
272- layer_deps = prev_deps [name ]
271+ layer = prev_layers [prev_layer_name ]
272+ layer_deps = prev_deps [prev_layer_name ]
273273 layer_deps_to_omit = layer_deps & omit_layers
274274 layer_deps_to_clone = layer_deps - omit_layers
275275 deps_to_clone |= layer_deps_to_clone
276276 deps_to_copy_verbatim |= layer_deps_to_omit
277277
278- omit_keys_from_layers = {
279- key
280- for dep in layer_deps_to_omit
281- for key in new_layers [dep ].get_output_keys ()
282- }
283- new_layers [new_name ], bound = layer .clone (
284- keys = replace_keys - omit_keys_from_layers ,
278+ layer_clone_keys = clone_keys .copy ()
279+ for dep in layer_deps_to_omit :
280+ layer_clone_keys -= new_layers [dep ].get_output_keys ()
281+
282+ new_layers [new_layer_name ], bound = layer .clone (
283+ keys = layer_clone_keys ,
285284 seed = seed ,
286285 bind_to = blocker_key ,
287286 )
288- new_deps [new_name ] = {
287+ new_deps [new_layer_name ] = {
289288 clone_key (dep , seed = seed ) for dep in layer_deps_to_clone
290289 } | layer_deps_to_omit
291290 if bound :
292- new_deps [new_name ].add (blocker_key )
291+ new_deps [new_layer_name ].add (blocker_key )
293292
294293 # Add the layers of the collections from omit from child.dsk. Note that, when
295294 # assume_layers=False, it would be unsafe to simply do HighLevelGraph.merge(dsk,
296295 # omit[i].dsk). Also, collections in omit may or may not be parents of this specific
297296 # child, or of any children at all.
298297 while deps_to_copy_verbatim :
299- name = deps_to_clone .pop ()
300- layer_deps = prev_deps [name ]
298+ layer_name = deps_to_clone .pop ()
299+ layer_deps = prev_deps [layer_name ]
301300 deps_to_copy_verbatim |= layer_deps
302- new_deps [name ] = layer_deps
303- new_layers [name ] = prev_layers [name ]
301+ new_deps [layer_name ] = layer_deps
302+ new_layers [layer_name ] = prev_layers [layer_name ]
304303
305304 rebuild , args = child .__dask_postpersist__ ()
306305 return rebuild (
307- HighLevelGraph (new_layers , new_deps ), * args , name = clone_key (name , seed )
306+ HighLevelGraph (new_layers , new_deps ),
307+ * args ,
308+ name = clone_key (prev_coll_name , seed ),
308309 )
309310
310311
0 commit comments