code: def fields(cls):
      
      if not isclass(cls):
          raise TypeError("Passed object must be a class.")
      attrs = getattr(cls, "__attrs_attrs__", None)
      if attrs is None:
          raise NotAnAttrsClassError(
              "{cls!r} is not an attrs-decorated class.".format(cls=cls)
          )
      return attrs
docs: Return the tuple of ``attrs`` attributes for a class.
  
      The tuple also allows accessing the fields by their names (see below for
      examples).
  
      :param type cls: Class to introspect.
  
      :raise TypeError: If *cls* is not a class.
      :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs``
          class.
  
      :rtype: tuple (with name accessors) of :class:`attr.Attribute`
  
      ..  versionchanged:: 16.2.0 Returned tuple allows accessing the fields
          by name.