docs: def index(objects, attr):
      """
      Generate a mapping of a list of objects indexed by the given attr.
  
      Parameters
      ----------
      objects : :class:`list`, iterable
      attr : string
          The attribute to index the list of objects by
  
      Returns
      -------
      dictionary : dict
          keys are the value of each object's attr, and values are from objects
  
      Example
      -------
  
      class Person(object):
          def __init__(self, name, email, age):
              self.name = name
              self.email = email
              self.age = age
  
      people = [
          Person('one', 'one@people.com', 1),
          Person('two', 'two@people.com', 2),
          Person('three', 'three@people.com', 3)
      ]
  
      by_email = index(people, 'email')
      by_name = index(people, 'name')
  
      assert by_name['one'] is people[0]
      assert by_email['two@people.com'] is people[1]
  
      """
      with warnings.catch_warnings():
          warnings.simplefilter("ignore")
          return {getattr(obj, attr): obj for obj in objects}