docs: def import_from_ding0(file, network):
      """
      Import an eDisGo grid topology from
      `Ding0 data <https://github.com/openego/ding0>`_.
  
      This import method is specifically designed to load grid topology data in
      the format as `Ding0 <https://github.com/openego/ding0>`_ provides it via
      pickles.
  
      The import of the grid topology includes
  
          * the topology itself
          * equipment parameter
          * generators incl. location, type, subtype and capacity
          * loads incl. location and sectoral consumption
  
      Parameters
      ----------
      file: :obj:`str` or :class:`ding0.core.NetworkDing0`
          If a str is provided it is assumed it points to a pickle with Ding0
          grid data. This file will be read.
          If an object of the type :class:`ding0.core.NetworkDing0` data will be
          used directly from this object.
      network: :class:`~.grid.network.Network`
          The eDisGo data container object
  
      Notes
      -----
      Assumes :class:`ding0.core.NetworkDing0` provided by `file` contains
      only data of one mv_grid_district.
  
      """
      # when `file` is a string, it will be read by the help of pickle
      if isinstance(file, str):
          ding0_nd = load_nd_from_pickle(filename=file)
      # otherwise it is assumed the object is passed directly
      else:
          ding0_nd = file
  
      ding0_mv_grid = ding0_nd._mv_grid_districts[0].mv_grid
  
      # Make sure circuit breakers (respectively the rings) are closed
      ding0_mv_grid.close_circuit_breakers()
  
      # Import medium-voltage grid data
      network.mv_grid = _build_mv_grid(ding0_mv_grid, network)
  
      # Import low-voltage grid data
      lv_grids, lv_station_mapping, lv_grid_mapping = _build_lv_grid(
          ding0_mv_grid, network)
  
      # Assign lv_grids to network
      network.mv_grid.lv_grids = lv_grids
  
      # Integrate disconnecting points
      position_switch_disconnectors(network.mv_grid,
                                    mode=network.config['disconnecting_point'][
                                        'position'])
  
      # Check data integrity
      _validate_ding0_grid_import(network.mv_grid, ding0_mv_grid,
                                  lv_grid_mapping)
  
      # Set data source
      network.set_data_source('grid', 'dingo')
  
      # Set more params
      network._id = network.mv_grid.id
  
      # Update the weather_cell_ids in mv_grid to include the ones in lv_grids
      # ToDo: maybe get a better solution to push the weather_cell_ids in lv_grids but not in mv_grid but into the
      # mv_grid.weather_cell_ids from within the Grid() object or the MVGrid() or LVGrid()
      mv_weather_cell_id = network.mv_grid.weather_cells
      for lvg in lv_grids:
          if lvg.weather_cells:
              for lv_w_id in lvg._weather_cells:
                  if not (lv_w_id in mv_weather_cell_id):
                      network.mv_grid._weather_cells.append(lv_w_id)