class_docstr: Blockwise-IO argument
  
  This is the base class for indexable Blockwise-IO arguments.
  When constructing a ``Blockwise`` Layer, one or more of the
  collection tuples passed in with ``indices`` may contain a
  ``BlockwiseDep`` instance (in place of a "real" collection name).
  This allows a new collection to be created (via IO) within a
  ``Blockwise`` layer.
  
  Parameters
  ----------
  numblocks: tuple[int, ...]
      The number of blocks/partitions the object can support
      along each dimension.
  produces_tasks: bool
      Whether any nested tasks will be passed to the Blockwise
      function.
  
  See Also
  --------
  dask.blockwise.Blockwise
  dask.blockwise.BlockwiseDepDict
class_docstr_tok: ["Blockwise-IO","argument","This","is","the","base","class","for","indexable","Blockwise-IO","arguments",".","When","constructing","a","``","Blockwise","``","Layer",",","one","or","more","of","the","collection","tuples","passed","in","with","``","indices","``","may","contain","a","``","BlockwiseDep","``","instance","(","in","place","of","a","``","real","''","collection","name",")",".","This","allows","a","new","collection","to","be","created","(","via","IO",")","within","a","``","Blockwise","``","layer",".","Parameters","--","--","--","--","--","numblocks",":","tuple","[","int",",","...","]","The","number","of","blocks\/partitions","the","object","can","support","along","each","dimension",".","produces_tasks",":","bool","Whether","any","nested","tasks","will","be","passed","to","the","Blockwise","function",".","See","Also","--","--","--","--","dask.blockwise.Blockwise","dask.blockwise.BlockwiseDepDict"]
docstr: Whether this object will produce external key dependencies.
  
  An external key corresponds to a task key or ``Delayed``-object
  key that does not originate from within the ``Blockwise`` layer
  that is including this ``BlockwiseDep`` object in its ``indices``.
  A ``BlockwiseDep`` object should only return external-key
  dependencies when those dependencies do not correspond to a
  blockwise-compatible Dask collection (otherwise the collection
  name should just be included in ``indices`` list instead).
code: def produces_keys(self) -> bool:
      """Whether this object will produce external key dependencies.
  
      An external key corresponds to a task key or ``Delayed``-object
      key that does not originate from within the ``Blockwise`` layer
      that is including this ``BlockwiseDep`` object in its ``indices``.
      A ``BlockwiseDep`` object should only return external-key
      dependencies when those dependencies do not correspond to a
      blockwise-compatible Dask collection (otherwise the collection
      name should just be included in ``indices`` list instead).
      """
      return False
  
imports: from __future__ import annotations
  import itertools
  import os
  from collections.abc import Hashable, Iterable, Mapping, Sequence
  from itertools import product
  from math import prod
  from typing import Any
  import tlz
  import dask
  from dask.base import clone_key, get_name_from_key, tokenize
  from dask.core import flatten, ishashable, keys_in_tasks, reverse_dict
  from dask.highlevelgraph import HighLevelGraph, Layer
  from dask.optimization import SubgraphCallable, fuse
  from dask.typing import Graph, Key
  from dask.utils import _deprecated, apply, ensure_dict, homogeneous_deepmap, stringify_collection_keys
label_desc: Use image node_id 3 for calling the BlockwiseDep obj's underlying member method code with example usage: obj.produces_keys() and returns: False