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)