class_docstr: Metaclass for attribute collector classes
  
  Classes that use this metaclass are intended to collect vertex/edge
  attributes from various sources (a Python dict, a vertex/edge sequence,
  default values from the igraph configuration and such) in a given
  order of precedence. See the module documentation for more details.
  This metaclass enables the user to use a simple declarative syntax
  to specify which attributes he is interested in. For each vertex/edge
  attribute, a corresponding class attribute must be defined with a
  value that describes the default value of that attribute if no other
  data source provides us with any suitable value. The default value
  can also be a tuple; in that case, the first element of the tuple
  is the actual default value, the second element is a converter
  function that will convert the attribute values to a format expected
  by the caller who uses the class being defined.
  
  There is a special class attribute called C{_kwds_prefix}; this is
  not used as an attribute declaration. It can contain a string which
  will be used to derive alternative names for the attributes when
  the attribute is accessed in a Python dict. This is useful in many
  situations; for instance, the default graph drawer would want to access
  the vertex colors using the C{color} vertex attribute, but when
  it looks at the keyword arguments passed to the original call of
  L{igraph.Graph.__plot__}, the C{vertex_color} keyword argument should
  be looked up because we also have colors for the edges. C{_kwds_prefix}
  will be prepended to the attribute names when they are looked up in
  a dict of keyword arguments.
  
  If you require a more fine-tuned behaviour, you can assign an
  L{AttributeSpecification} instance to a class attribute directly.
  
  @see: AttributeCollectorBase
docstr: Generates a simple class that has the given slots and nothing else
docstr_tok: ["Generates","a","simple","class","that","has","the","given","slots","and","nothing","else"]
code: def record_generator(cls, name, slots):
      """Generates a simple class that has the given slots and nothing else"""
  
      class Element:
          """A simple class that holds the attributes collected by the
          attribute collector"""
  
          __slots__ = tuple(slots)
  
          def __init__(self, attrs=()):
              for attr, value in attrs:
                  setattr(self, attr, value)
  
      Element.__name__ = name
      return Element
  
file_path: python-igraph/src/igraph/drawing/metamagic.py
imports: from configparser import NoOptionError
  from igraph.configuration import Configuration
label_desc: Use image node_id 2 for calling the AttributeCollectorMeta obj's underlying member method code with example usage: obj.record_generator(cls, name, slots) and returns: Element