docs: def get_port_at_point(self, vpos, distance=10, exclude=None, exclude_port_fun=None):
          """
          Find item with port closest to specified position.
  
          List of items to be ignored can be specified with `exclude`
          parameter.
  
          Tuple is returned
  
          - found item
          - closest, connectable port
          - closest point on found port (in view coordinates)
  
          :Parameters:
           vpos
              Position specified in view coordinates.
           distance
              Max distance from point to a port (default 10)
           exclude
              Set of items to ignore.
          """
          # Method had to be inherited, as the base method has a bug:
          # It misses the statement max_dist = d
          v2i = self.get_matrix_v2i
          vx, vy = vpos
  
          max_dist = distance
          port = None
          glue_pos = None
          item = None
  
          rect = (vx - distance, vy - distance, distance * 2, distance * 2)
          items = self.get_items_in_rectangle(rect, reverse=True)
          for i in items:
              if exclude and i in exclude:
                  continue
              for p in i.ports():
                  if not p.connectable:
                      continue
                  if exclude_port_fun and exclude_port_fun(p):
                      continue
  
                  ix, iy = v2i(i).transform_point(vx, vy)
                  pg, d = p.glue((ix, iy))
                  if d > max_dist:
                      continue
  
                  max_dist = d
                  item = i
                  port = p
  
                  # transform coordinates from connectable item space to view
                  # space
                  i2v = self.get_matrix_i2v(i).transform_point
                  glue_pos = i2v(*pg)
  
          return item, port, glue_pos