<commit_before>I remember reading somewhere that documentation should have three sections:

1. Introduction

   This page is for people who are learning about the project for the first 
   time.
   
   "Do I want to use this library?"
   "Could this library make things easier for me?"

   Questions like these are what I ask myself when I follow links to new 
   libraries (e.g. links from on python.ideas or the pyglet mailing list).  I 
   want to answer them as quickly as possible, so the introduction is the place 
   for that.

2. Tutorials

   This section is for people who are learning how to use the library, or who 
   were intrigued by the introduction but want to get a more in-depth feel for 
   how the library actually works.  The topics I want to cover are:

   - Installation
      "Glooey is easy to install"

   - Widget comparison

   - Getting started
      - imports
      - pyglet
      - glooey.Gui
      - glooey.Placeholder

   - Especially useful widgets

      Glooey comes with a lot of widgets
      Only need a few to get started
      See API docs for exhaustive list.

      I think I need a section like this early on to give an idea what can be 
      done.  Without it I think the "stylize" and "compose" sections will be 
      too...theoretical.

      But I can't really talk about how to use these widgets until I've talked 
      about how to stylize.  No, all these widgets can be used without a style, 
      they're just ugly.  And I think it's important to get to a diversity of 
      widgets ASAP.

      - Label
      - Background
      - Button
      - HBox
      - VBox
      - Grid

      These aren't all of the widgets I plan to mention in the tutorials 
      (Placeholder, Frame, Bin, and Stack will probably come up as well), but 
      it's a good basic set.

   - Stylizing widgets
      - custom_* class attributes
      - nested classes

   - Padding, alignment, and size hints
      - hints
      - padding
      - alignment

   - Composing widgets
      - Widget.__init__()
      - nested classes

   - The widget hierarchy

   - How drawing works
      - In order to be drawn, a widget needs:
         - rect (see "How repacking works")
         - group (see "How regrouping works")
         - batch (comes from the root of the widget hierarchy)

      - draw()
      - undraw()
      - hide()
      - unhide()

   - How repacking works

   - How regrouping works

   - How mouse events work

   - Making widgets from scratch

      - Useful widget attributes
         - parent
         - root
         - window
         - batch
         - group
         - rect
         - claimed_rect<commit_msg>Add notes on the structure of the docs.<commit_after>I remember reading somewhere that documentation should have three sections:

1. Introduction

   This page is for people who are learning about the project for the first 
   time.
   
   "Do I want to use this library?"
   "Could this library make things easier for me?"

   Questions like these are what I ask myself when I follow links to new 
   libraries (e.g. links from on python.ideas or the pyglet mailing list).  I 
   want to answer them as quickly as possible, so the introduction is the place 
   for that.

2. Tutorials

   This section is for people who are learning how to use the library, or who 
   were intrigued by the introduction but want to get a more in-depth feel for 
   how the library actually works.  The topics I want to cover are:

   - Installation
      "Glooey is easy to install"

   - Getting started
      - imports
      - pyglet
      - glooey.Gui
      - glooey.Placeholder

   - Especially useful widgets

      Glooey comes with a lot of widgets
      Only need a few to get started
      See API docs for exhaustive list.

      I think I need a section like this early on to give an idea what can be 
      done.  Without it I think the "stylize" and "compose" sections will be 
      too...theoretical.

      But I can't really talk about how to use these widgets until I've talked 
      about how to stylize.  No, all these widgets can be used without a style, 
      they're just ugly.  And I think it's important to get to a diversity of 
      widgets ASAP.

      - Label
      - Background
      - Button
      - HBox
      - VBox
      - Grid

      These aren't all of the widgets I plan to mention in the tutorials 
      (Placeholder, Frame, Bin, and Stack will probably come up as well), but 
      it's a good basic set.

   - Stylizing widgets
      - custom_* class attributes
      - nested classes

   - Padding, alignment, and size hints
      - hints
      - padding
      - alignment

   - Composing widgets
      - Widget.__init__()
      - nested classes

   - Under the hood

     - The widget hierarchy

     - How drawing works
        - In order to be drawn, a widget needs:
           - rect (see "How repacking works")
           - group (see "How regrouping works")
           - batch (comes from the root of the widget hierarchy)

        - draw()
        - undraw()
        - hide()
        - unhide()

     - How repacking works

     - How regrouping works

     - How mouse events work

   - Making widgets from scratch

      - Useful widget attributes
         - parent
         - root
         - window
         - batch
         - group
         - rect
         - claimed_rect
{'fraction_non_alphanumeric': 0.04820398287734971, 'fraction_numerical': 0.000744463056020845, 'mean_word_length': 1.9270152505446623, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6849174', 'n_tokens_mistral': 1492, 'n_tokens_neox': 1385, 'n_words': 717}