class_docstr: A composite class to hold many data sets which can be iterated over.
  
  This wraps/extends the `vtkMultiBlockDataSet
  <https://vtk.org/doc/nightly/html/classvtkMultiBlockDataSet.html>`_ class
  so that we can easily plot these data sets and use the composite in a
  Pythonic manner.
  
  You can think of ``MultiBlock`` like a list as we
  can iterate over this data structure by index.  It has some dictionary
  features as we can also access blocks by their string name.
  
  .. versionchanged:: 0.36.0
     ``MultiBlock`` adheres more closely to being list like, and inherits
     from :class:`collections.abc.MutableSequence`.  Multiple nonconforming
     behaviors were removed or modified.
  
  Parameters
  ----------
  *args : dict, optional
      Data object dictionary.
  
  **kwargs : dict, optional
      See :func:`pyvista.read` for additional options.
  
  Examples
  --------
  >>> import pyvista as pv
  
  Create an empty composite dataset.
  
  >>> blocks = pv.MultiBlock()
  
  Add a dataset to the collection.
  
  >>> sphere = pv.Sphere()
  >>> blocks.append(sphere)
  
  Add a named block.
  
  >>> blocks["cube"] = pv.Cube()
  
  Instantiate from a list of objects.
  
  >>> data = [
  ...     pv.Sphere(center=(2, 0, 0)),
  ...     pv.Cube(center=(0, 2, 0)),
  ...     pv.Cone(),
  ... ]
  >>> blocks = pv.MultiBlock(data)
  >>> blocks.plot()
  
  Instantiate from a dictionary.
  
  >>> data = {
  ...     "cube": pv.Cube(),
  ...     "sphere": pv.Sphere(center=(2, 2, 0)),
  ... }
  >>> blocks = pv.MultiBlock(data)
  >>> blocks.plot()
  
  Iterate over the collection.
  
  >>> for name in blocks.keys():
  ...     block = blocks[name]
  ...
  
  >>> for block in blocks:
  ...     # Do something with each dataset
  ...     surf = block.extract_surface()
  ...
class_docstr_tok: ["A","composite","class","to","hold","many","data","sets","which","can","be","iterated","over",".","This","wraps\/extends","the","`","vtkMultiBlockDataSet","<","https",":","\/\/vtk.org\/doc\/nightly\/html\/classvtkMultiBlockDataSet.html",">","`","_","class","so","that","we","can","easily","plot","these","data","sets","and","use","the","composite","in","a","Pythonic","manner",".","You","can","think","of","``","MultiBlock","``","like","a","list","as","we","can","iterate","over","this","data","structure","by","index",".","It","has","some","dictionary","features","as","we","can","also","access","blocks","by","their","string","name",".","..","versionchanged",":",":","0.36.0","``","MultiBlock","``","adheres","more","closely","to","being","list","like",",","and","inherits","from",":","class",":","`","collections.abc.MutableSequence","`",".","Multiple","nonconforming","behaviors","were","removed","or","modified",".","Parameters","--","--","--","--","--","*","args",":","dict",",","optional","Data","object","dictionary",".","*","*","kwargs",":","dict",",","optional","See",":","func",":","`","pyvista.read","`","for","additional","options",".","Examples","--","--","--","--",">",">",">","import","pyvista","as","pv","Create","an","empty","composite","dataset",".",">",">",">","blocks","=","pv.MultiBlock","(",")","Add","a","dataset","to","the","collection",".",">",">",">","sphere","=","pv.Sphere","(",")",">",">",">","blocks.append","(","sphere",")","Add","a","named","block",".",">",">",">","blocks","[","``","cube","''","]","=","pv.Cube","(",")","Instantiate","from","a","list","of","objects",".",">",">",">","data","=","[","...","pv.Sphere","(","center=","(","2",",","0",",","0",")",")",",","...","pv.Cube","(","center=","(","0",",","2",",","0",")",")",",","...","pv.Cone","(",")",",","...","]",">",">",">","blocks","=","pv.MultiBlock","(","data",")",">",">",">","blocks.plot","(",")","Instantiate","from","a","dictionary",".",">",">",">","data","=","{","...","``","cube","''",":","pv.Cube","(",")",",","...","``","sphere","''",":","pv.Sphere","(","center=","(","2",",","2",",","0",")",")",",","...","}",">",">",">","blocks","=","pv.MultiBlock","(","data",")",">",">",">","blocks.plot","(",")","Iterate","over","the","collection",".",">",">",">","for","name","in","blocks.keys","(",")",":","...","block","=","blocks","[","name","]","...",">",">",">","for","block","in","blocks",":","...","#","Do","something","with","each","dataset","...","surf","=","block.extract_surface","(",")","..."]
docstr: Insert data before index.
  
  Parameters
  ----------
  index : int
      Index before which to insert data.
  dataset : pyvista.DataSet or pyvista.MultiBlock
      Data to insert.
  name : str, optional
      Name for key to give dataset.  A default name is given
      depending on the block index as ``'Block-{i:02}'``.
  
  Examples
  --------
  Insert a new :class:`pyvista.PolyData` at the start of the multiblock.
  
  >>> import pyvista as pv
  >>> data = {
  ...     "cube": pv.Cube(),
  ...     "sphere": pv.Sphere(center=(2, 2, 0)),
  ... }
  >>> blocks = pv.MultiBlock(data)
  >>> blocks.keys()
  ['cube', 'sphere']
  >>> blocks.insert(0, pv.Plane(), "plane")
  >>> blocks.keys()
  ['plane', 'cube', 'sphere']
docstr_tok: ["Insert","data","before","index",".","Parameters","--","--","--","--","--","index",":","int","Index","before","which","to","insert","data",".","dataset",":","pyvista.DataSet","or","pyvista.MultiBlock","Data","to","insert",".","name",":","str",",","optional","Name","for","key","to","give","dataset",".","A","default","name","is","given","depending","on","the","block","index","as","``","'Block-","{","i:02","}","'","``",".","Examples","--","--","--","--","Insert","a","new",":","class",":","`","pyvista.PolyData","`","at","the","start","of","the","multiblock",".",">",">",">","import","pyvista","as","pv",">",">",">","data","=","{","...","``","cube","''",":","pv.Cube","(",")",",","...","``","sphere","''",":","pv.Sphere","(","center=","(","2",",","2",",","0",")",")",",","...","}",">",">",">","blocks","=","pv.MultiBlock","(","data",")",">",">",">","blocks.keys","(",")","[","'cube","'",",","'sphere","'","]",">",">",">","blocks.insert","(","0",",","pv.Plane","(",")",",","``","plane","''",")",">",">",">","blocks.keys","(",")","[","'plane","'",",","'cube","'",",","'sphere","'","]"]
code: def insert(
      self,
      index: int,
      dataset: _TypeMultiBlockLeaf,
      name: Optional[str] = None,
  ) -> None:
      """Insert data before index.
  
      Parameters
      ----------
      index : int
          Index before which to insert data.
      dataset : pyvista.DataSet or pyvista.MultiBlock
          Data to insert.
      name : str, optional
          Name for key to give dataset.  A default name is given
          depending on the block index as ``'Block-{i:02}'``.
  
      Examples
      --------
      Insert a new :class:`pyvista.PolyData` at the start of the multiblock.
  
      >>> import pyvista as pv
      >>> data = {
      ...     "cube": pv.Cube(),
      ...     "sphere": pv.Sphere(center=(2, 2, 0)),
      ... }
      >>> blocks = pv.MultiBlock(data)
      >>> blocks.keys()
      ['cube', 'sphere']
      >>> blocks.insert(0, pv.Plane(), "plane")
      >>> blocks.keys()
      ['plane', 'cube', 'sphere']
  
      """
      index = range(self.n_blocks)[index]
  
      self.n_blocks += 1
      for i in reversed(range(index, self.n_blocks - 1)):
          self[i + 1] = self[i]
          self.set_block_name(i + 1, self.get_block_name(i))
  
      self[index] = dataset
      self.set_block_name(index, name)
  
imports: import collections.abc
  from itertools import zip_longest
  import pathlib
  from typing import Any, Iterable, List, Optional, Set, Tuple, Union, cast, overload
  import numpy
  import pyvista
  from .None import _vtk_core
  from ._typing_core import BoundsLike
  from .dataset import DataObject, DataSet
  from .filters import CompositeFilters
  from .pyvista_ndarray import pyvista_ndarray
  from .utilities.arrays import FieldAssociation
  from .utilities.geometric_objects import Box
  from .utilities.helpers import is_pyvista_dataset, wrap
label_desc: Use image node_id 30 for calling the MultiBlock obj's underlying member method code with example usage: obj.insert(index, dataset, name) without return types