ButtonWidget
************

class praw.models.ButtonWidget(reddit, _data)

   Class to represent a widget containing one or more buttons.

   Find an existing one:

      button_widget = None
      widgets = reddit.subreddit("redditdev").widgets
      for widget in widgets.sidebar:
          if isinstance(widget, praw.models.ButtonWidget):
              button_widget = widget
              break

      for button in button_widget:
          print(button.text, button.url)

   Create one (requires proper moderator permissions):

      widgets = reddit.subreddit("redditdev").widgets
      buttons = [
          {
              "kind": "text",
              "text": "View source",
              "url": 'https://github.com/praw-dev/praw',
              "color": "#FF0000",
              "textColor": "#00FF00",
              "fillColor": "#0000FF",
              "hoverState": {
                  "kind": "text",
                  "text": "ecruos weiV",
                  "color": "#000000",
                  "textColor": "#FFFFFF",
                  "fillColor": "#0000FF",
              },
          },
          {
              "kind": "text",
              "text": "View documentation",
              "url": 'https://praw.readthedocs.io',
              "color": "#FFFFFF",
              "textColor": "#FFFF00",
              "fillColor": "#0000FF",
          },
      ]
      styles = {"backgroundColor": "#FFFF66", "headerColor": "#3333EE"}
      button_widget = widgets.mod.add_button_widget(
          "Things to click", "Click some of these *cool* links!", buttons, styles
      )

   For more information on creation, see "add_button_widget()".

   Update one (requires proper moderator permissions):

      new_styles = {"backgroundColor": "#FFFFFF", "headerColor": "#FF9900"}
      button_widget = button_widget.mod.update(shortName="My fav buttons", styles=new_styles)

   Delete one (requires proper moderator permissions):

      button_widget.mod.delete()

   **Typical Attributes**

   This table describes attributes that typically belong to objects of
   this class. Since attributes are dynamically provided (see
   Determine Available Attributes of an Object), there is not a
   guarantee that these attributes will always be present, nor is this
   list necessarily complete.

   +-------------------------+--------------------------------------------------------------+
   | Attribute               | Description                                                  |
   |=========================|==============================================================|
   | "buttons"               | A "list" of "Button"s. These can also be accessed just by    |
   |                         | iterating over the "ButtonWidget" (e.g. "for button in       |
   |                         | button_widget").                                             |
   +-------------------------+--------------------------------------------------------------+
   | "description"           | The description, in Markdown.                                |
   +-------------------------+--------------------------------------------------------------+
   | "description_html"      | The description, in HTML.                                    |
   +-------------------------+--------------------------------------------------------------+
   | "id"                    | The widget ID.                                               |
   +-------------------------+--------------------------------------------------------------+
   | "kind"                  | The widget kind (always ""button"").                         |
   +-------------------------+--------------------------------------------------------------+
   | "shortName"             | The short name of the widget.                                |
   +-------------------------+--------------------------------------------------------------+
   | "styles"                | A "dict" with the keys ""backgroundColor"" and               |
   |                         | ""headerColor"".                                             |
   +-------------------------+--------------------------------------------------------------+
   | "subreddit"             | The "Subreddit" the button widget belongs to.                |
   +-------------------------+--------------------------------------------------------------+

   __contains__(item: Any) -> bool

      Test if item exists in the list.

   __getitem__(index: int) -> Any

      Return the item at position index in the list.

   __init__(reddit, _data)

      Initialize an instance of the class.

   __iter__() -> Iterator[Any]

      Return an iterator to the list.

   __len__() -> int

      Return the number of items in the list.

   mod()

      Get an instance of "WidgetModeration" for this widget.

      Note:

        Using any of the methods of "WidgetModeration" will likely
        make the data in the "SubredditWidgets" that this widget
        belongs to outdated. To remedy this, call "refresh()".

   classmethod parse(data: Dict[str, Any], reddit: Reddit) -> Any

      Return an instance of "cls" from "data".

      Parameters:
         * **data** -- The structured data.

         * **reddit** -- An instance of "Reddit".
