code: def calc_geo_branches_in_buffer(node, mv_grid, radius, radius_inc, proj):
      
  
      branches = []
  
      while not branches:
          node_shp = transform(proj, node.geo_data)
          buffer_zone_shp = node_shp.buffer(radius)
          for branch in mv_grid.graph_edges():
              nodes = branch['adj_nodes']
              branch_shp = transform(proj, LineString([nodes[0].geo_data, nodes[1].geo_data]))
              if buffer_zone_shp.intersects(branch_shp):
                  branches.append(branch)
          radius += radius_inc
  
      return branches
docs: Determines branches in nodes' associated graph that are at least partly
      within buffer of `radius` from `node`.
      
      If there are no nodes, the buffer is successively extended by `radius_inc`
      until nodes are found.
  
      Parameters
      ----------
      node : LVStationDing0, GeneratorDing0, or CableDistributorDing0
          origin node (e.g. LVStationDing0 object) with associated shapely object
          (attribute `geo_data`) in any CRS (e.g. WGS84)
      radius : float
          buffer radius in m
      radius_inc : float
          radius increment in m
      proj : int
          pyproj projection object: nodes' CRS to equidistant CRS
          (e.g. WGS84 -> ETRS)
  
      Returns
      -------
      :any:`list` of :networkx:`NetworkX Graph Obj< >`
          List of branches (NetworkX branch objects)