diff --git a/.github/CONTRIBUTING.rst b/.github/CONTRIBUTING.rst index 8d7ee688a..970516466 100644 --- a/.github/CONTRIBUTING.rst +++ b/.github/CONTRIBUTING.rst @@ -1,14 +1,17 @@ -Guidelines for Contributing -=========================== +############################# + Guidelines for Contributing +############################# -Code of Conduct ---------------- +***************** + Code of Conduct +***************** This project is released with a `Contributor Code of Conduct`_. By participating in this project you agree to abide by its terms. -Creating an Issue ------------------ +******************* + Creating an Issue +******************* 1. Please do not create issues for questions you have. The appropriate location for such questions is `r/redditdev`_ or via Slack_. @@ -17,15 +20,17 @@ Creating an Issue 3. Please use GitHub's issue search feature to look for already reported issues before reporting your own. -Responding to Issues --------------------- +********************** + Responding to Issues +********************** One of the simplest ways to help with PRAW is by answering others questions. When responding, always be positive. While something may be obvious to you, it likely is not to the person asking the question. -Creating Pull Requests ----------------------- +************************ + Creating Pull Requests +************************ 1. If you are fixing an already filed issue, please indicate your intentions by commenting on the issue. This act will hopefully minimize any duplicate work. @@ -58,15 +63,17 @@ Creating Pull Requests 9. Feel free to check on the status of your pull request periodically by adding a comment. -Becoming a Team Member ----------------------- +************************ + Becoming a Team Member +************************ The PRAW team is always interested in expanding PRAW's active team member base with proven contributors. If you are interested, please let us know. In general, we would like to see you push a number of contributions before we add you on. -Style Recommendations ---------------------- +*********************** + Style Recommendations +*********************** To keep PRAW's source consistent, all contribution code must pass the ``pre_push.py`` script. GitHub Actions will enforce the passing of the automated tests, as well as style @@ -75,7 +82,7 @@ with much of PEP8 and PEP257 there are a few things that it does not enforce. Pl look over the following list: Method Order within a Class -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +=========================== - Group method names by type and order the groups like so: @@ -113,8 +120,9 @@ Method Order within a Class def instance_method(self): pass -See Also --------- +********** + See Also +********** Please also read `Contributing to PRAW`_. diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 769478a14..cc22d0d0e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,12 +22,12 @@ repos: - id: ruff args: [ --exit-non-zero-on-fix, --fix ] files: ^(praw/.*.py)$ - rev: v0.13.3 + rev: v0.14.6 - repo: https://github.com/LilSpazJoekp/docstrfmt hooks: - id: docstrfmt - rev: v1.11.1 + rev: v2.0.0 - repo: https://github.com/MarcoGorelli/auto-walrus hooks: diff --git a/AUTHORS.rst b/AUTHORS.rst index 271f3e6ff..f4579b03f 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -1,12 +1,14 @@ -Maintainers -=========== +############# + Maintainers +############# - Bryce Boe `@bboe `_ - Joe RH `@jarhill0 `_ - Joel Payne `@LilSpazJoekp `_ -Documentation Contributors -========================== +############################ + Documentation Contributors +############################ - Dale Cudmore `@DCuddies `_ - Zhifu Ge `@zhifuge `_ @@ -34,13 +36,15 @@ Documentation Contributors - u/gkanor `@gkanor `_ - Add "Name and github profile link" above this line. -Logo Creator -============ +############## + Logo Creator +############## - kungming2 `@kungming2 `_ -Source Contributors -=================== +##################### + Source Contributors +##################### - Ethan Dalool `@voussoir `_ - William McKinnerney `@williammck `_ diff --git a/CHANGES.rst b/CHANGES.rst index 84f7866c0..8b058b220 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,10 +1,12 @@ -Change Log -========== +############ + Change Log +############ PRAW follows `semantic versioning `_. -Unreleased ----------- +************ + Unreleased +************ **Added** @@ -56,15 +58,17 @@ Unreleased - Remove ``SubredditMessage.mute`` and ``SubredditMessage.unmute`` methods. - Remove ``InboxableMixin.unblock_subreddit`` method. -7.8.1 (2024/10/25) ------------------- +******************** + 7.8.1 (2024/10/25) +******************** **Changed** - Bumped prawcore to 2.4.0. -7.8.0 (2024/10/20) ------------------- +******************** + 7.8.0 (2024/10/20) +******************** **Added** @@ -87,15 +91,17 @@ Unreleased - Drop support for Python 3.7, which is end-of-life on 2023-06-27. -7.7.1 (2023/07/11) ------------------- +******************** + 7.7.1 (2023/07/11) +******************** **Fixed** - An issue with replying to a modmail conversation results in a error. -7.7.0 (2023/02/25) ------------------- +******************** + 7.7.0 (2023/02/25) +******************** **Added** @@ -124,8 +130,9 @@ Unreleased - An issue with iterating :class:`.ModNote` when a user has more than a hundred notes. - Removal reasons are now returned in the same order as they appear on Reddit. -7.6.1 (2022/11/11) ------------------- +******************** + 7.6.1 (2022/11/11) +******************** **Changed** @@ -140,8 +147,9 @@ Unreleased - An issue where :class:`.ModmailConversation`'s ``messages`` attribute would only contain the latest message. -7.6.0 (2022/05/10) ------------------- +******************** + 7.6.0 (2022/05/10) +******************** **Added** @@ -188,8 +196,9 @@ Unreleased alphabetically, and prevent breaking changes when adding new arguments to existing methods. -7.5.0 (2021/11/13) ------------------- +******************** + 7.5.0 (2021/11/13) +******************** **Added** @@ -206,8 +215,9 @@ Unreleased - Fixed bug where some keyword arguments that are passed to :meth:`.Draft.submit` would not have an effect. -7.4.0 (2021/07/30) ------------------- +******************** + 7.4.0 (2021/07/30) +******************** **Added** @@ -237,8 +247,9 @@ Unreleased - :class:`.Reddit` keyword argument ``token_manager``. -7.3.0 (2021/06/17) ------------------- +******************** + 7.3.0 (2021/06/17) +******************** **Added** @@ -277,8 +288,9 @@ Unreleased - Fixed bug where :meth:`~.FullnameMixin.fullname` sometimes returned the wrong fullname. -7.2.0 (2021/02/24) ------------------- +******************** + 7.2.0 (2021/02/24) +******************** **Added** @@ -298,30 +310,34 @@ Unreleased forward to the PRAW 8 behavior set ``praw8_raise_exception_on_me=True`` in your :class:`.Reddit` call. -7.1.4 (2021/02/07) ------------------- +******************** + 7.1.4 (2021/02/07) +******************** **Fixed** - Asynchronous check will no longer fail in Python 3.6 multithreading edge cases. -7.1.3 (2021/02/05) ------------------- +******************** + 7.1.3 (2021/02/05) +******************** **Changed** - Asynchronous check will no longer occur when in a Jupyter notebook. -7.1.2 (2021/02/03) ------------------- +******************** + 7.1.2 (2021/02/03) +******************** **Fixed** - Asynchronous check would not work on Python 3.6 as :py:func:`~asyncio.get_running_loop` only exists on Python 3.7+. -7.1.1 (2021/02/02) ------------------- +******************** + 7.1.1 (2021/02/02) +******************** **Added** @@ -361,8 +377,9 @@ Unreleased - Some cases where streams yield the same item multiple times. This cannot be prevented in every case. -7.1.0 (2020/06/22) ------------------- +******************** + 7.1.0 (2020/06/22) +******************** **Added** @@ -403,8 +420,9 @@ Unreleased - :meth:`~.Subreddit.submit_image` and :meth:`~.Subreddit.submit_video` will throw :class:`.MediaPostFailed` when Reddit fails to post an image or video post. -7.0.0 (2020/04/24) ------------------- +******************** + 7.0.0 (2020/04/24) +******************** **Added** @@ -500,16 +518,18 @@ Unreleased - Method ``reddit.user.moderator_subreddits`` has been removed. Please use :meth:`.moderated` instead. -6.5.1 (2020/01/07) ------------------- +******************** + 6.5.1 (2020/01/07) +******************** **Fixed** - Removed usages of ``NoReturn`` that caused PRAW to fail due to ``ImportError`` in Python ``<3.5.4`` and ``<3.6.2``. -6.5.0 (2020/01/05) ------------------- +******************** + 6.5.0 (2020/01/05) +******************** **Added** @@ -565,8 +585,9 @@ Unreleased - The behavior of ``APIException`` will no longer unicode-escape strings in the next minor release. -6.4.0 (2019/09/21) ------------------- +******************** + 6.4.0 (2019/09/21) +******************** **Added** @@ -600,16 +621,18 @@ Unreleased - Drop official support for Python 2.7. - ``Multireddit.rename()`` no longer works due to a change in the Reddit API. -6.3.1 (2019/06/10) ------------------- +******************** + 6.3.1 (2019/06/10) +******************** **Removed** - ``SubredditListingMixin.gilded()``, as this was supposed to be removed in 6.0.0 after deprecation in 5.2.0. -6.3.0 (2019/06/09) ------------------- +******************** + 6.3.0 (2019/06/09) +******************** **Added** @@ -630,8 +653,9 @@ Unreleased - :meth:`.Reddit.info` now returns a generator instead of a list when using the ``url`` parameter. -6.2.0 (2019/05/05) ------------------- +******************** + 6.2.0 (2019/05/05) +******************** **Added** @@ -661,16 +685,18 @@ Unreleased - Bumped minimum prawcore version to 1.0.1. -6.1.1 (2019/01/29) ------------------- +******************** + 6.1.1 (2019/01/29) +******************** **Added** - :meth:`.SubredditFlair.set` supports parameter ``flair_template_id`` for giving a user redesign flair. -6.1.0 (2019/01/19) ------------------- +******************** + 6.1.0 (2019/01/19) +******************** **Added** @@ -716,8 +742,9 @@ Unreleased - Widgets of unknown types are parsed as :class:`.Widget`\ s rather than raising an exception. -6.0.0 (2018/07/24) ------------------- +******************** + 6.0.0 (2018/07/24) +******************** **Added** @@ -743,8 +770,9 @@ Unreleased - ``Subreddit.submissions`` as the API endpoint backing the method is no more. See https://www.reddit.com/r/changelog/comments/7tus5f/update_to_search_api/. -5.4.0 (2018/03/27) ------------------- +******************** + 5.4.0 (2018/03/27) +******************** **Added** @@ -775,8 +803,9 @@ Unreleased - Removed support for Python 3.3 as it is no longer supported by requests. -5.3.0 (2017/12/16) ------------------- +******************** + 5.3.0 (2017/12/16) +******************** **Added** @@ -788,8 +817,9 @@ Unreleased - Now raises ``prawcore.UnavailableForLegalReasons`` instead of an :py:class:`AssertionError` when encountering a HTTP 451 response. -5.2.0 (2017/10/24) ------------------- +******************** + 5.2.0 (2017/10/24) +******************** **Changed** @@ -806,8 +836,9 @@ Unreleased - Removed ``comment.permalink()`` because ``comment.permalink`` is now an attribute returned by Reddit. -5.1.0 (2017/08/31) ------------------- +******************** + 5.1.0 (2017/08/31) +******************** **Added** @@ -834,8 +865,9 @@ Unreleased - :class:`.Submission`'s ``gilded`` attribute properly returns the expected value from reddit. -5.0.1 (2017/07/11) ------------------- +******************** + 5.0.1 (2017/07/11) +******************** **Fixed** @@ -844,8 +876,9 @@ Unreleased - Lowered the average maximum delay between inactive stream checks by 4x to 16 seconds. It was previously 64 seconds, which was too long. -5.0.0 (2017/07/04) ------------------- +******************** + 5.0.0 (2017/07/04) +******************** **Added** @@ -887,8 +920,9 @@ Unreleased :meth:`.SubredditRedditorFlairTemplates.clear`. Use :class:`.SubredditLinkFlairTemplates` instead. -4.6.0 (2017/07/04) ------------------- +******************** + 4.6.0 (2017/07/04) +******************** The release's sole purpose is to announce the deprecation of the ``is_link`` parameter as described below: @@ -903,16 +937,18 @@ as described below: :meth:`.SubredditRedditorFlairTemplates.clear`. Use :class:`.SubredditLinkFlairTemplates` instead. -4.5.1 (2017/05/07) ------------------- +******************** + 4.5.1 (2017/05/07) +******************** **Fixed** - Calling :meth:`.parent` works on :class:`.Comment` instances obtained via :meth:`.comment_replies`. -4.5.0 (2017/04/29) ------------------- +******************** + 4.5.0 (2017/04/29) +******************** **Added** @@ -957,8 +993,9 @@ as described below: - :class:`.Submission` attributes ``comment_limit`` and ``comment_sort`` maintain their values after making instances non-lazy. -4.4.0 (2017/02/21) ------------------- +******************** + 4.4.0 (2017/02/21) +******************** **Added** @@ -992,8 +1029,9 @@ as described below: ``dest`` ``replies`` and ``subreddit`` properly converted to their appropriate PRAW model. -4.3.0 (2017/01/19) ------------------- +******************** + 4.3.0 (2017/01/19) +******************** **Added** @@ -1025,8 +1063,9 @@ as described below: :meth:`.ModeratorRelationship.update_invite` now always remove known unlisted permissions. -4.2.0 (2017/01/07) ------------------- +******************** + 4.2.0 (2017/01/07) +******************** **Added** @@ -1064,8 +1103,9 @@ as described below: - ``validate_time_filter`` is no longer part of the public interface. -4.1.0 (2016/12/24) ------------------- +******************** + 4.1.0 (2016/12/24) +******************** **Added** @@ -1123,8 +1163,9 @@ as described below: - Accessing an invalid attribute on an instance of :class:`.Message` will raise :py:class:`AttributeError` instead of :class:`.PRAWException`. -4.0.0 (2016/11/29) ------------------- +******************** + 4.0.0 (2016/11/29) +******************** **Fixed** @@ -1136,8 +1177,9 @@ as described below: saved in lower case and non-lower case page names results in a Redirect exception (thanks pcjonathan). -4.0.0rc3 (2016/11/26) ---------------------- +*********************** + 4.0.0rc3 (2016/11/26) +*********************** **Added** @@ -1147,16 +1189,18 @@ as described below: - :meth:`.scopes` to discover which scopes are available to the current authentication - Lots of documentation: https://praw.readthedocs.io/ -4.0.0rc2 (2016/11/20) ---------------------- +*********************** + 4.0.0rc2 (2016/11/20) +*********************** **Fixed** - :meth:`.Auth.authorize` properly sets the session's Authentication (thanks @williammck). -4.0.0rc1 (2016/11/20) ---------------------- +*********************** + 4.0.0rc1 (2016/11/20) +*********************** PRAW 4 introduces significant breaking changes. The numerous changes are not listed here, only the feature removals. Please read through :doc:`/getting_started/quick_start` diff --git a/README.rst b/README.rst index bd90bd2a3..e2dee4dc9 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,6 @@ -PRAW: The Python Reddit API Wrapper -=================================== +##################################### + PRAW: The Python Reddit API Wrapper +##################################### .. image:: https://img.shields.io/pypi/v/praw.svg :alt: Latest PRAW Version @@ -41,8 +42,9 @@ agent and you're set. .. _installation: -Installation ------------- +************** + Installation +************** PRAW is supported on Python 3.9+. The recommended way to install PRAW is via `pip `_. @@ -60,8 +62,9 @@ To install the latest development version of PRAW run the following instead: For instructions on installing Python and pip see "The Hitchhiker's Guide to Python" `Installation Guides `_. -Quickstart ----------- +************ + Quickstart +************ Assuming you already have a credentials for a script-type OAuth application you can instantiate an instance of PRAW like so: @@ -104,16 +107,18 @@ With the ``reddit`` instance you can then interact with Reddit: Please see PRAW's `documentation `_ for more examples of what you can do with PRAW. -Discord Bots and Asynchronous Environments ------------------------------------------- +******************************************** + Discord Bots and Asynchronous Environments +******************************************** If you plan on using PRAW in an asynchronous environment, (e.g., discord.py, asyncio) it is strongly recommended to use `Async PRAW `_. It is the official asynchronous version of PRAW and its usage is similar and has the same features as PRAW. -PRAW Discussion and Support ---------------------------- +***************************** + PRAW Discussion and Support +***************************** For those new to Python, or would otherwise consider themselves a Python beginner, please consider asking questions on the `r/learnpython @@ -146,13 +151,15 @@ reaction. Comments to issues containing additional information are certainly wel `_. By participating in this project you agree to abide by its terms. -Documentation -------------- +*************** + Documentation +*************** PRAW's documentation is located at https://praw.readthedocs.io/. -History -------- +********* + History +********* `August 2010 `_: @@ -175,8 +182,9 @@ praw-dev organization on GitHub. `_: Bryce began work on PRAW4, a complete rewrite of PRAW. -License -------- +********* + License +********* PRAW's source (v4.0.0+) is provided under the `Simplified BSD License `_. diff --git a/docs/code_overview/exceptions.rst b/docs/code_overview/exceptions.rst index eb15975f6..44bdcaf72 100644 --- a/docs/code_overview/exceptions.rst +++ b/docs/code_overview/exceptions.rst @@ -1,13 +1,15 @@ -Exceptions in PRAW -================== +#################### + Exceptions in PRAW +#################### In addition to exceptions under the ``praw.exceptions`` namespace shown below, exceptions might be raised that inherit from ``prawcore.PrawcoreException``. Please see the following resource for information on those exceptions: https://github.com/praw-dev/prawcore/blob/main/prawcore/exceptions.py -praw.exceptions ---------------- +***************** + praw.exceptions +***************** .. automodule:: praw.exceptions :inherited-members: diff --git a/docs/code_overview/models/comment.rst b/docs/code_overview/models/comment.rst index 1a14106bd..e600b9309 100644 --- a/docs/code_overview/models/comment.rst +++ b/docs/code_overview/models/comment.rst @@ -1,5 +1,6 @@ -Comment -======= +######### + Comment +######### .. autoclass:: praw.models.Comment :inherited-members: diff --git a/docs/code_overview/models/draft.rst b/docs/code_overview/models/draft.rst index 2f476c56b..49b0c9452 100644 --- a/docs/code_overview/models/draft.rst +++ b/docs/code_overview/models/draft.rst @@ -1,5 +1,6 @@ -Draft -===== +####### + Draft +####### .. autoclass:: praw.models.Draft :inherited-members: diff --git a/docs/code_overview/models/livethread.rst b/docs/code_overview/models/livethread.rst index 25c05fc3d..e5ab9fdeb 100644 --- a/docs/code_overview/models/livethread.rst +++ b/docs/code_overview/models/livethread.rst @@ -1,5 +1,6 @@ -LiveThread -========== +############ + LiveThread +############ .. autoclass:: praw.models.LiveThread :inherited-members: diff --git a/docs/code_overview/models/liveupdate.rst b/docs/code_overview/models/liveupdate.rst index 8919de0ff..63941ed9b 100644 --- a/docs/code_overview/models/liveupdate.rst +++ b/docs/code_overview/models/liveupdate.rst @@ -1,5 +1,6 @@ -LiveUpdate -========== +############ + LiveUpdate +############ .. autoclass:: praw.models.LiveUpdate :inherited-members: diff --git a/docs/code_overview/models/message.rst b/docs/code_overview/models/message.rst index 6c9faeae2..f71d89e13 100644 --- a/docs/code_overview/models/message.rst +++ b/docs/code_overview/models/message.rst @@ -1,5 +1,6 @@ -Message -======= +######### + Message +######### .. autoclass:: praw.models.Message :inherited-members: diff --git a/docs/code_overview/models/modmailconversation.rst b/docs/code_overview/models/modmailconversation.rst index 164f8e5b5..c0125562c 100644 --- a/docs/code_overview/models/modmailconversation.rst +++ b/docs/code_overview/models/modmailconversation.rst @@ -1,5 +1,6 @@ -ModmailConversation -=================== +##################### + ModmailConversation +##################### .. autoclass:: praw.models.reddit.modmail.ModmailConversation :inherited-members: diff --git a/docs/code_overview/models/more.rst b/docs/code_overview/models/more.rst index db28663d4..f5dbde9b3 100644 --- a/docs/code_overview/models/more.rst +++ b/docs/code_overview/models/more.rst @@ -1,5 +1,6 @@ -MoreComments -============ +############## + MoreComments +############## .. autoclass:: praw.models.MoreComments :inherited-members: diff --git a/docs/code_overview/models/multireddit.rst b/docs/code_overview/models/multireddit.rst index 5449c9ed3..d0200d379 100644 --- a/docs/code_overview/models/multireddit.rst +++ b/docs/code_overview/models/multireddit.rst @@ -1,5 +1,6 @@ -Multireddit -=========== +############# + Multireddit +############# .. autoclass:: praw.models.Multireddit :inherited-members: diff --git a/docs/code_overview/models/redditor.rst b/docs/code_overview/models/redditor.rst index 66bdbb5a9..52f0eeb11 100644 --- a/docs/code_overview/models/redditor.rst +++ b/docs/code_overview/models/redditor.rst @@ -1,5 +1,6 @@ -Redditor -======== +########## + Redditor +########## .. autoclass:: praw.models.Redditor :inherited-members: diff --git a/docs/code_overview/models/submission.rst b/docs/code_overview/models/submission.rst index 7dfe3efde..7d95b7f26 100644 --- a/docs/code_overview/models/submission.rst +++ b/docs/code_overview/models/submission.rst @@ -1,5 +1,6 @@ -Submission -========== +############ + Submission +############ .. autoclass:: praw.models.Submission :inherited-members: diff --git a/docs/code_overview/models/subreddit.rst b/docs/code_overview/models/subreddit.rst index 2134b6508..499c00e60 100644 --- a/docs/code_overview/models/subreddit.rst +++ b/docs/code_overview/models/subreddit.rst @@ -1,5 +1,6 @@ -Subreddit -========= +########### + Subreddit +########### .. autoclass:: praw.models.Subreddit :inherited-members: diff --git a/docs/code_overview/models/wikipage.rst b/docs/code_overview/models/wikipage.rst index 0992b433f..a0020eb30 100644 --- a/docs/code_overview/models/wikipage.rst +++ b/docs/code_overview/models/wikipage.rst @@ -1,5 +1,6 @@ -WikiPage -======== +########## + WikiPage +########## .. autoclass:: praw.models.reddit.wikipage.WikiPage :inherited-members: diff --git a/docs/code_overview/other.rst b/docs/code_overview/other.rst index 37d1f3668..2f7758b75 100644 --- a/docs/code_overview/other.rst +++ b/docs/code_overview/other.rst @@ -1,5 +1,6 @@ -Other Classes -============= +############### + Other Classes +############### The following list of classes are provided here for complete documentation. You should not likely need to work with these classes directly, but rather through instances of diff --git a/docs/code_overview/other/auth.rst b/docs/code_overview/other/auth.rst index 4d016e738..a615d4215 100644 --- a/docs/code_overview/other/auth.rst +++ b/docs/code_overview/other/auth.rst @@ -1,5 +1,6 @@ -Auth -==== +###### + Auth +###### .. autoclass:: praw.models.Auth :inherited-members: diff --git a/docs/code_overview/other/base_mod_notes.rst b/docs/code_overview/other/base_mod_notes.rst index 9d188ec2b..3c0e4ce6a 100644 --- a/docs/code_overview/other/base_mod_notes.rst +++ b/docs/code_overview/other/base_mod_notes.rst @@ -1,5 +1,6 @@ -BaseModNotes -============ +############## + BaseModNotes +############## .. autoclass:: praw.models.mod_notes.BaseModNotes :inherited-members: diff --git a/docs/code_overview/other/baselist.rst b/docs/code_overview/other/baselist.rst index 5d19c1fed..800287342 100644 --- a/docs/code_overview/other/baselist.rst +++ b/docs/code_overview/other/baselist.rst @@ -1,5 +1,6 @@ -BaseList -======== +########## + BaseList +########## .. autoclass:: praw.models.list.base.BaseList :inherited-members: diff --git a/docs/code_overview/other/button.rst b/docs/code_overview/other/button.rst index bb0e152a1..efc77ca65 100644 --- a/docs/code_overview/other/button.rst +++ b/docs/code_overview/other/button.rst @@ -1,5 +1,6 @@ -Button -====== +######## + Button +######## .. autoclass:: praw.models.Button :inherited-members: diff --git a/docs/code_overview/other/buttonwidget.rst b/docs/code_overview/other/buttonwidget.rst index 4153cd788..eaac6a675 100644 --- a/docs/code_overview/other/buttonwidget.rst +++ b/docs/code_overview/other/buttonwidget.rst @@ -1,5 +1,6 @@ -ButtonWidget -============ +############## + ButtonWidget +############## .. autoclass:: praw.models.ButtonWidget :inherited-members: diff --git a/docs/code_overview/other/calendar.rst b/docs/code_overview/other/calendar.rst index d07f9ad40..3b3867748 100644 --- a/docs/code_overview/other/calendar.rst +++ b/docs/code_overview/other/calendar.rst @@ -1,5 +1,6 @@ -Calendar -======== +########## + Calendar +########## .. autoclass:: praw.models.Calendar :inherited-members: diff --git a/docs/code_overview/other/calendarconfiguration.rst b/docs/code_overview/other/calendarconfiguration.rst index 25a878b6d..52cadaab5 100644 --- a/docs/code_overview/other/calendarconfiguration.rst +++ b/docs/code_overview/other/calendarconfiguration.rst @@ -1,5 +1,6 @@ -CalendarConfiguration -===================== +####################### + CalendarConfiguration +####################### .. autoclass:: praw.models.CalendarConfiguration :inherited-members: diff --git a/docs/code_overview/other/collection.rst b/docs/code_overview/other/collection.rst index 3ed9554f3..4fa0f91ff 100644 --- a/docs/code_overview/other/collection.rst +++ b/docs/code_overview/other/collection.rst @@ -1,5 +1,6 @@ -Collection -========== +############ + Collection +############ .. autoclass:: praw.models.Collection :inherited-members: diff --git a/docs/code_overview/other/collectionmoderation.rst b/docs/code_overview/other/collectionmoderation.rst index 9cf698c53..334317eef 100644 --- a/docs/code_overview/other/collectionmoderation.rst +++ b/docs/code_overview/other/collectionmoderation.rst @@ -1,5 +1,6 @@ -CollectionModeration -==================== +###################### + CollectionModeration +###################### .. autoclass:: praw.models.reddit.collections.CollectionModeration :inherited-members: diff --git a/docs/code_overview/other/commentforest.rst b/docs/code_overview/other/commentforest.rst index bd96be4f7..48c6f5d99 100644 --- a/docs/code_overview/other/commentforest.rst +++ b/docs/code_overview/other/commentforest.rst @@ -1,5 +1,6 @@ -CommentForest -============= +############### + CommentForest +############### .. autoclass:: praw.models.comment_forest.CommentForest :inherited-members: diff --git a/docs/code_overview/other/commenthelper.rst b/docs/code_overview/other/commenthelper.rst index e4f47fa2b..d3199e5ca 100644 --- a/docs/code_overview/other/commenthelper.rst +++ b/docs/code_overview/other/commenthelper.rst @@ -1,5 +1,6 @@ -CommentHelper -============= +############### + CommentHelper +############### .. autoclass:: praw.models.listing.mixins.subreddit.CommentHelper :inherited-members: diff --git a/docs/code_overview/other/commentmoderation.rst b/docs/code_overview/other/commentmoderation.rst index dd6e8951b..52eb45084 100644 --- a/docs/code_overview/other/commentmoderation.rst +++ b/docs/code_overview/other/commentmoderation.rst @@ -1,5 +1,6 @@ -CommentModeration -================= +################### + CommentModeration +################### .. autoclass:: praw.models.reddit.comment.CommentModeration :inherited-members: diff --git a/docs/code_overview/other/communitylist.rst b/docs/code_overview/other/communitylist.rst index bfaff012d..aa7aeb5d7 100644 --- a/docs/code_overview/other/communitylist.rst +++ b/docs/code_overview/other/communitylist.rst @@ -1,5 +1,6 @@ -CommunityList -============= +############### + CommunityList +############### .. autoclass:: praw.models.CommunityList :inherited-members: diff --git a/docs/code_overview/other/config.rst b/docs/code_overview/other/config.rst index cf3d7d17c..c622eb4fc 100644 --- a/docs/code_overview/other/config.rst +++ b/docs/code_overview/other/config.rst @@ -1,5 +1,6 @@ -Config -====== +######## + Config +######## .. autoclass:: praw.config.Config :inherited-members: diff --git a/docs/code_overview/other/contributorrelationship.rst b/docs/code_overview/other/contributorrelationship.rst index 6548d0ca4..46a553db7 100644 --- a/docs/code_overview/other/contributorrelationship.rst +++ b/docs/code_overview/other/contributorrelationship.rst @@ -1,5 +1,6 @@ -ContributorRelationship -======================= +######################### + ContributorRelationship +######################### .. autoclass:: praw.models.reddit.subreddit.ContributorRelationship :inherited-members: diff --git a/docs/code_overview/other/customwidget.rst b/docs/code_overview/other/customwidget.rst index deb2a91c8..6ada0f1b1 100644 --- a/docs/code_overview/other/customwidget.rst +++ b/docs/code_overview/other/customwidget.rst @@ -1,5 +1,6 @@ -CustomWidget -============ +############## + CustomWidget +############## .. autoclass:: praw.models.CustomWidget :inherited-members: diff --git a/docs/code_overview/other/domainlisting.rst b/docs/code_overview/other/domainlisting.rst index f8ba15720..06d1d3290 100644 --- a/docs/code_overview/other/domainlisting.rst +++ b/docs/code_overview/other/domainlisting.rst @@ -1,5 +1,6 @@ -DomainListing -============= +############### + DomainListing +############### .. autoclass:: praw.models.DomainListing :inherited-members: diff --git a/docs/code_overview/other/draftlist.rst b/docs/code_overview/other/draftlist.rst index faff8b070..b581928e9 100644 --- a/docs/code_overview/other/draftlist.rst +++ b/docs/code_overview/other/draftlist.rst @@ -1,5 +1,6 @@ -DraftList -========= +########### + DraftList +########### .. autoclass:: praw.models.DraftList :inherited-members: diff --git a/docs/code_overview/other/emoji.rst b/docs/code_overview/other/emoji.rst index 29e41d608..b7be25df3 100644 --- a/docs/code_overview/other/emoji.rst +++ b/docs/code_overview/other/emoji.rst @@ -1,5 +1,6 @@ -Emoji -===== +####### + Emoji +####### .. autoclass:: praw.models.reddit.emoji.Emoji :inherited-members: diff --git a/docs/code_overview/other/fullnamemixin.rst b/docs/code_overview/other/fullnamemixin.rst index 8631606fb..07608b408 100644 --- a/docs/code_overview/other/fullnamemixin.rst +++ b/docs/code_overview/other/fullnamemixin.rst @@ -1,5 +1,6 @@ -FullnameMixin -============= +############### + FullnameMixin +############### .. autoclass:: praw.models.reddit.mixins.FullnameMixin :inherited-members: diff --git a/docs/code_overview/other/hover.rst b/docs/code_overview/other/hover.rst index c58a8846b..070ed6801 100644 --- a/docs/code_overview/other/hover.rst +++ b/docs/code_overview/other/hover.rst @@ -1,5 +1,6 @@ -Hover -===== +####### + Hover +####### .. autoclass:: praw.models.Hover :inherited-members: diff --git a/docs/code_overview/other/idcard.rst b/docs/code_overview/other/idcard.rst index 45f9d7bfe..c674b4006 100644 --- a/docs/code_overview/other/idcard.rst +++ b/docs/code_overview/other/idcard.rst @@ -1,5 +1,6 @@ -IDCard -====== +######## + IDCard +######## .. autoclass:: praw.models.IDCard :inherited-members: diff --git a/docs/code_overview/other/image.rst b/docs/code_overview/other/image.rst index ce5ce4143..8758beb01 100644 --- a/docs/code_overview/other/image.rst +++ b/docs/code_overview/other/image.rst @@ -1,5 +1,6 @@ -Image -===== +####### + Image +####### .. autoclass:: praw.models.Image :inherited-members: diff --git a/docs/code_overview/other/imagedata.rst b/docs/code_overview/other/imagedata.rst index 1a6b2b384..615126e1e 100644 --- a/docs/code_overview/other/imagedata.rst +++ b/docs/code_overview/other/imagedata.rst @@ -1,5 +1,6 @@ -ImageData -========= +########### + ImageData +########### .. autoclass:: praw.models.ImageData :inherited-members: diff --git a/docs/code_overview/other/imagewidget.rst b/docs/code_overview/other/imagewidget.rst index d0f013b41..5ff6e9528 100644 --- a/docs/code_overview/other/imagewidget.rst +++ b/docs/code_overview/other/imagewidget.rst @@ -1,5 +1,6 @@ -ImageWidget -=========== +############# + ImageWidget +############# .. autoclass:: praw.models.ImageWidget :inherited-members: diff --git a/docs/code_overview/other/inboxablemixin.rst b/docs/code_overview/other/inboxablemixin.rst index ba24b8792..8ada0fb7f 100644 --- a/docs/code_overview/other/inboxablemixin.rst +++ b/docs/code_overview/other/inboxablemixin.rst @@ -1,5 +1,6 @@ -InboxableMixin -============== +################ + InboxableMixin +################ .. autoclass:: praw.models.reddit.mixins.InboxableMixin :inherited-members: diff --git a/docs/code_overview/other/inlinegif.rst b/docs/code_overview/other/inlinegif.rst index e5cc053cf..67f02fec7 100644 --- a/docs/code_overview/other/inlinegif.rst +++ b/docs/code_overview/other/inlinegif.rst @@ -1,5 +1,6 @@ -InlineGif -========= +########### + InlineGif +########### .. autoclass:: praw.models.InlineGif :inherited-members: diff --git a/docs/code_overview/other/inlineimage.rst b/docs/code_overview/other/inlineimage.rst index a4944e8c5..91fd83221 100644 --- a/docs/code_overview/other/inlineimage.rst +++ b/docs/code_overview/other/inlineimage.rst @@ -1,5 +1,6 @@ -InlineImage -=========== +############# + InlineImage +############# .. autoclass:: praw.models.InlineImage :inherited-members: diff --git a/docs/code_overview/other/inlinemedia.rst b/docs/code_overview/other/inlinemedia.rst index 50d57652d..bffeaac0e 100644 --- a/docs/code_overview/other/inlinemedia.rst +++ b/docs/code_overview/other/inlinemedia.rst @@ -1,5 +1,6 @@ -InlineMedia -=========== +############# + InlineMedia +############# .. autoclass:: praw.models.InlineMedia :inherited-members: diff --git a/docs/code_overview/other/inlinevideo.rst b/docs/code_overview/other/inlinevideo.rst index ac88dccff..84b8a9f8b 100644 --- a/docs/code_overview/other/inlinevideo.rst +++ b/docs/code_overview/other/inlinevideo.rst @@ -1,5 +1,6 @@ -InlineVideo -=========== +############# + InlineVideo +############# .. autoclass:: praw.models.InlineVideo :inherited-members: diff --git a/docs/code_overview/other/listinggenerator.rst b/docs/code_overview/other/listinggenerator.rst index 6f303aa3b..e7ba2b59b 100644 --- a/docs/code_overview/other/listinggenerator.rst +++ b/docs/code_overview/other/listinggenerator.rst @@ -1,5 +1,6 @@ -ListingGenerator -================ +################## + ListingGenerator +################## .. autoclass:: praw.models.ListingGenerator :inherited-members: diff --git a/docs/code_overview/other/livecontributorrelationship.rst b/docs/code_overview/other/livecontributorrelationship.rst index 772959182..e2d5111b9 100644 --- a/docs/code_overview/other/livecontributorrelationship.rst +++ b/docs/code_overview/other/livecontributorrelationship.rst @@ -1,5 +1,6 @@ -LiveContributorRelationship -=========================== +############################# + LiveContributorRelationship +############################# .. autoclass:: praw.models.reddit.live.LiveContributorRelationship :inherited-members: diff --git a/docs/code_overview/other/livethreadcontribution.rst b/docs/code_overview/other/livethreadcontribution.rst index 80635f1df..835dc7f0b 100644 --- a/docs/code_overview/other/livethreadcontribution.rst +++ b/docs/code_overview/other/livethreadcontribution.rst @@ -1,5 +1,6 @@ -LiveThreadContribution -====================== +######################## + LiveThreadContribution +######################## .. autoclass:: praw.models.reddit.live.LiveThreadContribution :inherited-members: diff --git a/docs/code_overview/other/livethreadstream.rst b/docs/code_overview/other/livethreadstream.rst index 81a63ac2c..2bba05887 100644 --- a/docs/code_overview/other/livethreadstream.rst +++ b/docs/code_overview/other/livethreadstream.rst @@ -1,5 +1,6 @@ -LiveThreadStream -================ +################## + LiveThreadStream +################## .. autoclass:: praw.models.reddit.live.LiveThreadStream :inherited-members: diff --git a/docs/code_overview/other/liveupdatecontribution.rst b/docs/code_overview/other/liveupdatecontribution.rst index aee4ba3ff..071a6f4ff 100644 --- a/docs/code_overview/other/liveupdatecontribution.rst +++ b/docs/code_overview/other/liveupdatecontribution.rst @@ -1,5 +1,6 @@ -LiveUpdateContribution -====================== +######################## + LiveUpdateContribution +######################## .. autoclass:: praw.models.reddit.live.LiveUpdateContribution :inherited-members: diff --git a/docs/code_overview/other/menu.rst b/docs/code_overview/other/menu.rst index f5295d6e5..5c6973e5a 100644 --- a/docs/code_overview/other/menu.rst +++ b/docs/code_overview/other/menu.rst @@ -1,5 +1,6 @@ -Menu -==== +###### + Menu +###### .. autoclass:: praw.models.Menu :inherited-members: diff --git a/docs/code_overview/other/menulink.rst b/docs/code_overview/other/menulink.rst index c61aac682..6fcba83dc 100644 --- a/docs/code_overview/other/menulink.rst +++ b/docs/code_overview/other/menulink.rst @@ -1,5 +1,6 @@ -MenuLink -======== +########## + MenuLink +########## .. autoclass:: praw.models.MenuLink :inherited-members: diff --git a/docs/code_overview/other/mod_action.rst b/docs/code_overview/other/mod_action.rst index 13cb38a69..389c0b1c9 100644 --- a/docs/code_overview/other/mod_action.rst +++ b/docs/code_overview/other/mod_action.rst @@ -1,5 +1,6 @@ -ModAction -========= +########### + ModAction +########### .. autoclass:: praw.models.ModAction :inherited-members: diff --git a/docs/code_overview/other/mod_note.rst b/docs/code_overview/other/mod_note.rst index 9b19e416a..fb05193c0 100644 --- a/docs/code_overview/other/mod_note.rst +++ b/docs/code_overview/other/mod_note.rst @@ -1,5 +1,6 @@ -ModNote -======= +######### + ModNote +######### .. autoclass:: praw.models.ModNote :inherited-members: diff --git a/docs/code_overview/other/mod_note_mixin.rst b/docs/code_overview/other/mod_note_mixin.rst index 8c9fa8460..68c229017 100644 --- a/docs/code_overview/other/mod_note_mixin.rst +++ b/docs/code_overview/other/mod_note_mixin.rst @@ -1,5 +1,6 @@ -ModNoteMixin -============ +############## + ModNoteMixin +############## .. autoclass:: praw.models.reddit.mixins.ModNoteMixin :members: diff --git a/docs/code_overview/other/moderatedlist.rst b/docs/code_overview/other/moderatedlist.rst index abd8269a2..66308b000 100644 --- a/docs/code_overview/other/moderatedlist.rst +++ b/docs/code_overview/other/moderatedlist.rst @@ -1,5 +1,6 @@ -ModeratedList -============= +############### + ModeratedList +############### .. autoclass:: praw.models.ModeratedList :inherited-members: diff --git a/docs/code_overview/other/moderatorrelationship.rst b/docs/code_overview/other/moderatorrelationship.rst index 99790b6d8..93f244211 100644 --- a/docs/code_overview/other/moderatorrelationship.rst +++ b/docs/code_overview/other/moderatorrelationship.rst @@ -1,5 +1,6 @@ -ModeratorRelationship -===================== +####################### + ModeratorRelationship +####################### .. autoclass:: praw.models.reddit.subreddit.ModeratorRelationship :inherited-members: diff --git a/docs/code_overview/other/moderatorswidget.rst b/docs/code_overview/other/moderatorswidget.rst index 6a313de1e..fb53d2d93 100644 --- a/docs/code_overview/other/moderatorswidget.rst +++ b/docs/code_overview/other/moderatorswidget.rst @@ -1,5 +1,6 @@ -ModeratorsWidget -================ +################## + ModeratorsWidget +################## .. autoclass:: praw.models.ModeratorsWidget :inherited-members: diff --git a/docs/code_overview/other/modmail.rst b/docs/code_overview/other/modmail.rst index 82a5bb575..07cc9bfca 100644 --- a/docs/code_overview/other/modmail.rst +++ b/docs/code_overview/other/modmail.rst @@ -1,5 +1,6 @@ -Modmail -======= +######### + Modmail +######### .. autoclass:: praw.models.reddit.subreddit.Modmail :inherited-members: diff --git a/docs/code_overview/other/modmailmessage.rst b/docs/code_overview/other/modmailmessage.rst index b45ae43da..352b1a64f 100644 --- a/docs/code_overview/other/modmailmessage.rst +++ b/docs/code_overview/other/modmailmessage.rst @@ -1,5 +1,6 @@ -ModmailMessage -============== +################ + ModmailMessage +################ .. autoclass:: praw.models.ModmailMessage :inherited-members: diff --git a/docs/code_overview/other/partialredditor.rst b/docs/code_overview/other/partialredditor.rst index 660398394..1a41cbe39 100644 --- a/docs/code_overview/other/partialredditor.rst +++ b/docs/code_overview/other/partialredditor.rst @@ -1,5 +1,6 @@ -PartialRedditor -=============== +################# + PartialRedditor +################# .. autoclass:: praw.models.redditors.PartialRedditor :inherited-members: diff --git a/docs/code_overview/other/polldata.rst b/docs/code_overview/other/polldata.rst index 6c7b61aef..8b292ca5c 100644 --- a/docs/code_overview/other/polldata.rst +++ b/docs/code_overview/other/polldata.rst @@ -1,5 +1,6 @@ -PollData -======== +########## + PollData +########## .. autoclass:: praw.models.reddit.poll.PollData :inherited-members: diff --git a/docs/code_overview/other/polloption.rst b/docs/code_overview/other/polloption.rst index 9a42d6300..bd60e0e34 100644 --- a/docs/code_overview/other/polloption.rst +++ b/docs/code_overview/other/polloption.rst @@ -1,5 +1,6 @@ -PollOption -========== +############ + PollOption +############ .. autoclass:: praw.models.reddit.poll.PollOption :inherited-members: diff --git a/docs/code_overview/other/postflairwidget.rst b/docs/code_overview/other/postflairwidget.rst index 49da3a43b..3903ee802 100644 --- a/docs/code_overview/other/postflairwidget.rst +++ b/docs/code_overview/other/postflairwidget.rst @@ -1,5 +1,6 @@ -PostFlairWidget -=============== +################# + PostFlairWidget +################# .. autoclass:: praw.models.PostFlairWidget :inherited-members: diff --git a/docs/code_overview/other/prawbase.rst b/docs/code_overview/other/prawbase.rst index afc41baed..956352448 100644 --- a/docs/code_overview/other/prawbase.rst +++ b/docs/code_overview/other/prawbase.rst @@ -1,5 +1,6 @@ -PRAWBase -======== +########## + PRAWBase +########## .. autoclass:: praw.models.base.PRAWBase :inherited-members: diff --git a/docs/code_overview/other/preferences.rst b/docs/code_overview/other/preferences.rst index 7bf710bec..f7cb45583 100644 --- a/docs/code_overview/other/preferences.rst +++ b/docs/code_overview/other/preferences.rst @@ -1,5 +1,6 @@ -Preferences -=========== +############# + Preferences +############# .. autoclass:: praw.models.Preferences :inherited-members: diff --git a/docs/code_overview/other/reddit_mod_notes.rst b/docs/code_overview/other/reddit_mod_notes.rst index cc28a2ef6..b7f2a40b9 100644 --- a/docs/code_overview/other/reddit_mod_notes.rst +++ b/docs/code_overview/other/reddit_mod_notes.rst @@ -1,5 +1,6 @@ -RedditModNotes -============== +################ + RedditModNotes +################ .. autoclass:: praw.models.RedditModNotes :inherited-members: diff --git a/docs/code_overview/other/redditbase.rst b/docs/code_overview/other/redditbase.rst index a7ba8cb55..6d14e73e0 100644 --- a/docs/code_overview/other/redditbase.rst +++ b/docs/code_overview/other/redditbase.rst @@ -1,5 +1,6 @@ -RedditBase -========== +############ + RedditBase +############ .. autoclass:: praw.models.reddit.base.RedditBase :inherited-members: diff --git a/docs/code_overview/other/redditor_mod_notes.rst b/docs/code_overview/other/redditor_mod_notes.rst index 0088e984c..7d93caea1 100644 --- a/docs/code_overview/other/redditor_mod_notes.rst +++ b/docs/code_overview/other/redditor_mod_notes.rst @@ -1,5 +1,6 @@ -RedditorModNotes -================ +################## + RedditorModNotes +################## .. autoclass:: praw.models.RedditorModNotes :inherited-members: diff --git a/docs/code_overview/other/redditorlist.rst b/docs/code_overview/other/redditorlist.rst index 25bd1129f..15704901a 100644 --- a/docs/code_overview/other/redditorlist.rst +++ b/docs/code_overview/other/redditorlist.rst @@ -1,5 +1,6 @@ -RedditorList -============ +############## + RedditorList +############## .. autoclass:: praw.models.RedditorList :inherited-members: diff --git a/docs/code_overview/other/redditorstream.rst b/docs/code_overview/other/redditorstream.rst index a68edad47..da913d193 100644 --- a/docs/code_overview/other/redditorstream.rst +++ b/docs/code_overview/other/redditorstream.rst @@ -1,5 +1,6 @@ -RedditorStream -============== +################ + RedditorStream +################ .. autoclass:: praw.models.reddit.redditor.RedditorStream :inherited-members: diff --git a/docs/code_overview/other/removalreason.rst b/docs/code_overview/other/removalreason.rst index 8484416f2..98fe67149 100644 --- a/docs/code_overview/other/removalreason.rst +++ b/docs/code_overview/other/removalreason.rst @@ -1,5 +1,6 @@ -RemovalReason -============= +############### + RemovalReason +############### .. autoclass:: praw.models.reddit.removal_reasons.RemovalReason :inherited-members: diff --git a/docs/code_overview/other/rule.rst b/docs/code_overview/other/rule.rst index d91629949..48dadd369 100644 --- a/docs/code_overview/other/rule.rst +++ b/docs/code_overview/other/rule.rst @@ -1,5 +1,6 @@ -Rule -==== +###### + Rule +###### .. autoclass:: praw.models.Rule :inherited-members: diff --git a/docs/code_overview/other/rulemoderation.rst b/docs/code_overview/other/rulemoderation.rst index dc59515f3..d22926b31 100644 --- a/docs/code_overview/other/rulemoderation.rst +++ b/docs/code_overview/other/rulemoderation.rst @@ -1,5 +1,6 @@ -RuleModeration -============== +################ + RuleModeration +################ .. autoclass:: praw.models.reddit.rules.RuleModeration :inherited-members: diff --git a/docs/code_overview/other/ruleswidget.rst b/docs/code_overview/other/ruleswidget.rst index 886262783..5f845aac9 100644 --- a/docs/code_overview/other/ruleswidget.rst +++ b/docs/code_overview/other/ruleswidget.rst @@ -1,5 +1,6 @@ -RulesWidget -=========== +############# + RulesWidget +############# .. autoclass:: praw.models.RulesWidget :inherited-members: diff --git a/docs/code_overview/other/styles.rst b/docs/code_overview/other/styles.rst index 27ae31346..f264f3e05 100644 --- a/docs/code_overview/other/styles.rst +++ b/docs/code_overview/other/styles.rst @@ -1,5 +1,6 @@ -Styles -====== +######## + Styles +######## .. autoclass:: praw.models.Styles :inherited-members: diff --git a/docs/code_overview/other/stylesheet.rst b/docs/code_overview/other/stylesheet.rst index a1ae281b7..953b56f91 100644 --- a/docs/code_overview/other/stylesheet.rst +++ b/docs/code_overview/other/stylesheet.rst @@ -1,5 +1,6 @@ -Stylesheet -========== +############ + Stylesheet +############ .. autoclass:: praw.models.Stylesheet :inherited-members: diff --git a/docs/code_overview/other/sublisting.rst b/docs/code_overview/other/sublisting.rst index 4375757f3..936deb438 100644 --- a/docs/code_overview/other/sublisting.rst +++ b/docs/code_overview/other/sublisting.rst @@ -1,5 +1,6 @@ -SubListing -========== +############ + SubListing +############ .. autoclass:: praw.models.listing.mixins.redditor.SubListing :inherited-members: diff --git a/docs/code_overview/other/submenu.rst b/docs/code_overview/other/submenu.rst index 9ebde6acf..a97bd2d5b 100644 --- a/docs/code_overview/other/submenu.rst +++ b/docs/code_overview/other/submenu.rst @@ -1,5 +1,6 @@ -Submenu -======= +######### + Submenu +######### .. autoclass:: praw.models.Submenu :inherited-members: diff --git a/docs/code_overview/other/submissionflair.rst b/docs/code_overview/other/submissionflair.rst index 3309dab22..e698beb93 100644 --- a/docs/code_overview/other/submissionflair.rst +++ b/docs/code_overview/other/submissionflair.rst @@ -1,5 +1,6 @@ -SubmissionFlair -=============== +################# + SubmissionFlair +################# .. autoclass:: praw.models.reddit.submission.SubmissionFlair :inherited-members: diff --git a/docs/code_overview/other/submissionmoderation.rst b/docs/code_overview/other/submissionmoderation.rst index 5bf0c8e74..987009771 100644 --- a/docs/code_overview/other/submissionmoderation.rst +++ b/docs/code_overview/other/submissionmoderation.rst @@ -1,5 +1,6 @@ -SubmissionModeration -==================== +###################### + SubmissionModeration +###################### .. autoclass:: praw.models.reddit.submission.SubmissionModeration :inherited-members: diff --git a/docs/code_overview/other/subreddit_mod_notes.rst b/docs/code_overview/other/subreddit_mod_notes.rst index 4dd924672..6767111c5 100644 --- a/docs/code_overview/other/subreddit_mod_notes.rst +++ b/docs/code_overview/other/subreddit_mod_notes.rst @@ -1,5 +1,6 @@ -SubredditModNotes -================= +################### + SubredditModNotes +################### .. autoclass:: praw.models.SubredditModNotes :inherited-members: diff --git a/docs/code_overview/other/subredditcollections.rst b/docs/code_overview/other/subredditcollections.rst index cabaefb23..3c60fe008 100644 --- a/docs/code_overview/other/subredditcollections.rst +++ b/docs/code_overview/other/subredditcollections.rst @@ -1,5 +1,6 @@ -SubredditCollections -==================== +###################### + SubredditCollections +###################### .. autoclass:: praw.models.reddit.collections.SubredditCollections :inherited-members: diff --git a/docs/code_overview/other/subredditcollectionsmoderation.rst b/docs/code_overview/other/subredditcollectionsmoderation.rst index d5fbed6b8..2c9a77878 100644 --- a/docs/code_overview/other/subredditcollectionsmoderation.rst +++ b/docs/code_overview/other/subredditcollectionsmoderation.rst @@ -1,5 +1,6 @@ -SubredditCollectionsModeration -============================== +################################ + SubredditCollectionsModeration +################################ .. autoclass:: praw.models.reddit.collections.SubredditCollectionsModeration :inherited-members: diff --git a/docs/code_overview/other/subredditemoji.rst b/docs/code_overview/other/subredditemoji.rst index 4f1a865c7..8d076eadf 100644 --- a/docs/code_overview/other/subredditemoji.rst +++ b/docs/code_overview/other/subredditemoji.rst @@ -1,5 +1,6 @@ -SubredditEmoji -============== +################ + SubredditEmoji +################ .. autoclass:: praw.models.reddit.emoji.SubredditEmoji :inherited-members: diff --git a/docs/code_overview/other/subredditfilters.rst b/docs/code_overview/other/subredditfilters.rst index fe7f50c68..d20026abd 100644 --- a/docs/code_overview/other/subredditfilters.rst +++ b/docs/code_overview/other/subredditfilters.rst @@ -1,5 +1,6 @@ -SubredditFilters -================ +################## + SubredditFilters +################## .. autoclass:: praw.models.reddit.subreddit.SubredditFilters :inherited-members: diff --git a/docs/code_overview/other/subredditflair.rst b/docs/code_overview/other/subredditflair.rst index df65e8217..86aa4cecf 100644 --- a/docs/code_overview/other/subredditflair.rst +++ b/docs/code_overview/other/subredditflair.rst @@ -1,5 +1,6 @@ -SubredditFlair -============== +################ + SubredditFlair +################ .. autoclass:: praw.models.reddit.subreddit.SubredditFlair :inherited-members: diff --git a/docs/code_overview/other/subredditflairtemplates.rst b/docs/code_overview/other/subredditflairtemplates.rst index 4af4d8d2d..7cce56b02 100644 --- a/docs/code_overview/other/subredditflairtemplates.rst +++ b/docs/code_overview/other/subredditflairtemplates.rst @@ -1,5 +1,6 @@ -SubredditFlairTemplates -======================= +######################### + SubredditFlairTemplates +######################### .. autoclass:: praw.models.reddit.subreddit.SubredditFlairTemplates :inherited-members: diff --git a/docs/code_overview/other/subredditlinkflairtemplates.rst b/docs/code_overview/other/subredditlinkflairtemplates.rst index b156a0b42..7b78dbdc7 100644 --- a/docs/code_overview/other/subredditlinkflairtemplates.rst +++ b/docs/code_overview/other/subredditlinkflairtemplates.rst @@ -1,5 +1,6 @@ -SubredditLinkFlairTemplates -=========================== +############################# + SubredditLinkFlairTemplates +############################# .. autoclass:: praw.models.reddit.subreddit.SubredditLinkFlairTemplates :inherited-members: diff --git a/docs/code_overview/other/subredditlistingmixin.rst b/docs/code_overview/other/subredditlistingmixin.rst index fdb552d8b..64920f751 100644 --- a/docs/code_overview/other/subredditlistingmixin.rst +++ b/docs/code_overview/other/subredditlistingmixin.rst @@ -1,5 +1,6 @@ -SubredditListingMixin -===================== +####################### + SubredditListingMixin +####################### .. autoclass:: praw.models.listing.mixins.subreddit.SubredditListingMixin :inherited-members: diff --git a/docs/code_overview/other/subredditmessage.rst b/docs/code_overview/other/subredditmessage.rst index ad8b34c6a..d6e5dcf65 100644 --- a/docs/code_overview/other/subredditmessage.rst +++ b/docs/code_overview/other/subredditmessage.rst @@ -1,5 +1,6 @@ -SubredditMessage -================ +################## + SubredditMessage +################## .. autoclass:: praw.models.SubredditMessage :inherited-members: diff --git a/docs/code_overview/other/subredditmoderation.rst b/docs/code_overview/other/subredditmoderation.rst index 78da1e04e..2ed7b6acf 100644 --- a/docs/code_overview/other/subredditmoderation.rst +++ b/docs/code_overview/other/subredditmoderation.rst @@ -1,5 +1,6 @@ -SubredditModeration -=================== +##################### + SubredditModeration +##################### .. autoclass:: praw.models.reddit.subreddit.SubredditModeration :inherited-members: diff --git a/docs/code_overview/other/subredditmoderationstream.rst b/docs/code_overview/other/subredditmoderationstream.rst index 45980b861..5550f9e13 100644 --- a/docs/code_overview/other/subredditmoderationstream.rst +++ b/docs/code_overview/other/subredditmoderationstream.rst @@ -1,5 +1,6 @@ -SubredditModerationStream -========================= +########################### + SubredditModerationStream +########################### .. autoclass:: praw.models.reddit.subreddit.SubredditModerationStream :inherited-members: diff --git a/docs/code_overview/other/subredditquarantine.rst b/docs/code_overview/other/subredditquarantine.rst index 6cb8edc39..45828cede 100644 --- a/docs/code_overview/other/subredditquarantine.rst +++ b/docs/code_overview/other/subredditquarantine.rst @@ -1,5 +1,6 @@ -SubredditQuarantine -=================== +##################### + SubredditQuarantine +##################### .. autoclass:: praw.models.reddit.subreddit.SubredditQuarantine :inherited-members: diff --git a/docs/code_overview/other/subredditredditorflairtemplates.rst b/docs/code_overview/other/subredditredditorflairtemplates.rst index 950058356..308b49f76 100644 --- a/docs/code_overview/other/subredditredditorflairtemplates.rst +++ b/docs/code_overview/other/subredditredditorflairtemplates.rst @@ -1,5 +1,6 @@ -SubredditRedditorFlairTemplates -=============================== +################################# + SubredditRedditorFlairTemplates +################################# .. autoclass:: praw.models.reddit.subreddit.SubredditRedditorFlairTemplates :inherited-members: diff --git a/docs/code_overview/other/subredditrelationship.rst b/docs/code_overview/other/subredditrelationship.rst index b35ccc12e..e194fbe99 100644 --- a/docs/code_overview/other/subredditrelationship.rst +++ b/docs/code_overview/other/subredditrelationship.rst @@ -1,5 +1,6 @@ -SubredditRelationship -===================== +####################### + SubredditRelationship +####################### .. autoclass:: praw.models.reddit.subreddit.SubredditRelationship :inherited-members: diff --git a/docs/code_overview/other/subredditremovalreasons.rst b/docs/code_overview/other/subredditremovalreasons.rst index 2e32cb1ae..2ae0f43f6 100644 --- a/docs/code_overview/other/subredditremovalreasons.rst +++ b/docs/code_overview/other/subredditremovalreasons.rst @@ -1,5 +1,6 @@ -SubredditRemovalReasons -======================= +######################### + SubredditRemovalReasons +######################### .. autoclass:: praw.models.reddit.removal_reasons.SubredditRemovalReasons :inherited-members: diff --git a/docs/code_overview/other/subredditrules.rst b/docs/code_overview/other/subredditrules.rst index 7bc558ce7..c526552f5 100644 --- a/docs/code_overview/other/subredditrules.rst +++ b/docs/code_overview/other/subredditrules.rst @@ -1,5 +1,6 @@ -SubredditRules -============== +################ + SubredditRules +################ .. autoclass:: praw.models.reddit.rules.SubredditRules :inherited-members: diff --git a/docs/code_overview/other/subredditrulesmoderation.rst b/docs/code_overview/other/subredditrulesmoderation.rst index a39595b54..f1d1a82a3 100644 --- a/docs/code_overview/other/subredditrulesmoderation.rst +++ b/docs/code_overview/other/subredditrulesmoderation.rst @@ -1,5 +1,6 @@ -SubredditRulesModeration -======================== +########################## + SubredditRulesModeration +########################## .. autoclass:: praw.models.reddit.rules.SubredditRulesModeration :inherited-members: diff --git a/docs/code_overview/other/subredditstream.rst b/docs/code_overview/other/subredditstream.rst index 0fb724edd..e54885026 100644 --- a/docs/code_overview/other/subredditstream.rst +++ b/docs/code_overview/other/subredditstream.rst @@ -1,5 +1,6 @@ -SubredditStream -=============== +################# + SubredditStream +################# .. autoclass:: praw.models.reddit.subreddit.SubredditStream :inherited-members: diff --git a/docs/code_overview/other/subredditstylesheet.rst b/docs/code_overview/other/subredditstylesheet.rst index ce4b506e1..8c02ae9e9 100644 --- a/docs/code_overview/other/subredditstylesheet.rst +++ b/docs/code_overview/other/subredditstylesheet.rst @@ -1,5 +1,6 @@ -SubredditStylesheet -=================== +##################### + SubredditStylesheet +##################### .. autoclass:: praw.models.reddit.subreddit.SubredditStylesheet :inherited-members: diff --git a/docs/code_overview/other/subredditwidgets.rst b/docs/code_overview/other/subredditwidgets.rst index f3fd7c0fb..f1c43a7cd 100644 --- a/docs/code_overview/other/subredditwidgets.rst +++ b/docs/code_overview/other/subredditwidgets.rst @@ -1,5 +1,6 @@ -SubredditWidgets -================ +################## + SubredditWidgets +################## .. autoclass:: praw.models.SubredditWidgets :inherited-members: diff --git a/docs/code_overview/other/subredditwidgetsmoderation.rst b/docs/code_overview/other/subredditwidgetsmoderation.rst index 4546212e8..c6d7e9030 100644 --- a/docs/code_overview/other/subredditwidgetsmoderation.rst +++ b/docs/code_overview/other/subredditwidgetsmoderation.rst @@ -1,5 +1,6 @@ -SubredditWidgetsModeration -========================== +############################ + SubredditWidgetsModeration +############################ .. autoclass:: praw.models.SubredditWidgetsModeration :inherited-members: diff --git a/docs/code_overview/other/subredditwiki.rst b/docs/code_overview/other/subredditwiki.rst index b13048a18..d37a2951e 100644 --- a/docs/code_overview/other/subredditwiki.rst +++ b/docs/code_overview/other/subredditwiki.rst @@ -1,5 +1,6 @@ -SubredditWiki -============= +############### + SubredditWiki +############### .. autoclass:: praw.models.reddit.subreddit.SubredditWiki :inherited-members: diff --git a/docs/code_overview/other/textarea.rst b/docs/code_overview/other/textarea.rst index 4af66df5d..13e6d8138 100644 --- a/docs/code_overview/other/textarea.rst +++ b/docs/code_overview/other/textarea.rst @@ -1,5 +1,6 @@ -TextArea -======== +########## + TextArea +########## .. autoclass:: praw.models.TextArea :inherited-members: diff --git a/docs/code_overview/other/thingmoderationmixin.rst b/docs/code_overview/other/thingmoderationmixin.rst index e0555a591..ce22ca6cb 100644 --- a/docs/code_overview/other/thingmoderationmixin.rst +++ b/docs/code_overview/other/thingmoderationmixin.rst @@ -1,5 +1,6 @@ -ThingModerationMixin -==================== +###################### + ThingModerationMixin +###################### .. autoclass:: praw.models.reddit.mixins.ThingModerationMixin :inherited-members: diff --git a/docs/code_overview/other/trophy.rst b/docs/code_overview/other/trophy.rst index 7a8357a1f..581b85b94 100644 --- a/docs/code_overview/other/trophy.rst +++ b/docs/code_overview/other/trophy.rst @@ -1,5 +1,6 @@ -Trophy -====== +######## + Trophy +######## .. autoclass:: praw.models.Trophy :members: __str__ diff --git a/docs/code_overview/other/usersubreddit.rst b/docs/code_overview/other/usersubreddit.rst index dd8c33310..03034bd23 100644 --- a/docs/code_overview/other/usersubreddit.rst +++ b/docs/code_overview/other/usersubreddit.rst @@ -1,5 +1,6 @@ -UserSubreddit -============= +############### + UserSubreddit +############### .. autoclass:: praw.models.UserSubreddit :inherited-members: diff --git a/docs/code_overview/other/usersubredditmoderation.rst b/docs/code_overview/other/usersubredditmoderation.rst index 045afc5f8..23cdbc091 100644 --- a/docs/code_overview/other/usersubredditmoderation.rst +++ b/docs/code_overview/other/usersubredditmoderation.rst @@ -1,5 +1,6 @@ -UserSubredditModeration -======================= +######################### + UserSubredditModeration +######################### .. autoclass:: praw.models.reddit.user_subreddit.UserSubredditModeration :inherited-members: diff --git a/docs/code_overview/other/util.rst b/docs/code_overview/other/util.rst index 9ced4f109..d33024837 100644 --- a/docs/code_overview/other/util.rst +++ b/docs/code_overview/other/util.rst @@ -1,5 +1,6 @@ -Util -==== +###### + Util +###### .. autoclass:: praw.models.util.BoundedSet :inherited-members: diff --git a/docs/code_overview/other/widget.rst b/docs/code_overview/other/widget.rst index 02ce8c742..5ba64fe19 100644 --- a/docs/code_overview/other/widget.rst +++ b/docs/code_overview/other/widget.rst @@ -1,5 +1,6 @@ -Widget -====== +######## + Widget +######## .. autoclass:: praw.models.Widget :inherited-members: diff --git a/docs/code_overview/other/widgetmoderation.rst b/docs/code_overview/other/widgetmoderation.rst index 4f84e2c26..835ee779e 100644 --- a/docs/code_overview/other/widgetmoderation.rst +++ b/docs/code_overview/other/widgetmoderation.rst @@ -1,5 +1,6 @@ -WidgetModeration -================ +################## + WidgetModeration +################## .. autoclass:: praw.models.WidgetModeration :inherited-members: diff --git a/docs/code_overview/other/wikipagemoderation.rst b/docs/code_overview/other/wikipagemoderation.rst index a6bec495b..07ae00609 100644 --- a/docs/code_overview/other/wikipagemoderation.rst +++ b/docs/code_overview/other/wikipagemoderation.rst @@ -1,5 +1,6 @@ -WikiPageModeration -================== +#################### + WikiPageModeration +#################### .. autoclass:: praw.models.reddit.wikipage.WikiPageModeration :inherited-members: diff --git a/docs/code_overview/praw_models.rst b/docs/code_overview/praw_models.rst index e6fa69e44..3704c3a48 100644 --- a/docs/code_overview/praw_models.rst +++ b/docs/code_overview/praw_models.rst @@ -1,5 +1,6 @@ -Working with PRAW's Models -========================== +############################ + Working with PRAW's Models +############################ .. toctree:: :maxdepth: 2 diff --git a/docs/code_overview/reddit/drafts.rst b/docs/code_overview/reddit/drafts.rst index f1a53b6e6..0750966a4 100644 --- a/docs/code_overview/reddit/drafts.rst +++ b/docs/code_overview/reddit/drafts.rst @@ -1,5 +1,6 @@ -reddit.drafts -============= +############### + reddit.drafts +############### .. autoclass:: praw.models.DraftHelper :inherited-members: diff --git a/docs/code_overview/reddit/front.rst b/docs/code_overview/reddit/front.rst index cf39e41a2..3cb7f7992 100644 --- a/docs/code_overview/reddit/front.rst +++ b/docs/code_overview/reddit/front.rst @@ -1,5 +1,6 @@ -reddit.front -============ +############## + reddit.front +############## .. autoclass:: praw.models.Front :inherited-members: diff --git a/docs/code_overview/reddit/inbox.rst b/docs/code_overview/reddit/inbox.rst index 9e2e38f87..cf30da071 100644 --- a/docs/code_overview/reddit/inbox.rst +++ b/docs/code_overview/reddit/inbox.rst @@ -1,5 +1,6 @@ -reddit.inbox -============ +############## + reddit.inbox +############## .. autoclass:: praw.models.Inbox :inherited-members: diff --git a/docs/code_overview/reddit/live.rst b/docs/code_overview/reddit/live.rst index 2880d0ded..d525a4021 100644 --- a/docs/code_overview/reddit/live.rst +++ b/docs/code_overview/reddit/live.rst @@ -1,5 +1,6 @@ -reddit.live -=========== +############# + reddit.live +############# .. autoclass:: praw.models.LiveHelper :inherited-members: diff --git a/docs/code_overview/reddit/multireddit.rst b/docs/code_overview/reddit/multireddit.rst index 304b55aee..5f8b94c57 100644 --- a/docs/code_overview/reddit/multireddit.rst +++ b/docs/code_overview/reddit/multireddit.rst @@ -1,5 +1,6 @@ -reddit.multireddit -================== +#################### + reddit.multireddit +#################### .. autoclass:: praw.models.MultiredditHelper :inherited-members: diff --git a/docs/code_overview/reddit/redditors.rst b/docs/code_overview/reddit/redditors.rst index 502451528..f1ff945e6 100644 --- a/docs/code_overview/reddit/redditors.rst +++ b/docs/code_overview/reddit/redditors.rst @@ -1,5 +1,6 @@ -reddit.redditors -================ +################## + reddit.redditors +################## .. autoclass:: praw.models.Redditors :inherited-members: diff --git a/docs/code_overview/reddit/subreddit.rst b/docs/code_overview/reddit/subreddit.rst index ddd86bd83..9ccb805c7 100644 --- a/docs/code_overview/reddit/subreddit.rst +++ b/docs/code_overview/reddit/subreddit.rst @@ -1,5 +1,6 @@ -reddit.subreddit -================ +################## + reddit.subreddit +################## .. autoclass:: praw.models.SubredditHelper :inherited-members: diff --git a/docs/code_overview/reddit/subreddits.rst b/docs/code_overview/reddit/subreddits.rst index 9566b6588..afcbb0e1b 100644 --- a/docs/code_overview/reddit/subreddits.rst +++ b/docs/code_overview/reddit/subreddits.rst @@ -1,5 +1,6 @@ -reddit.subreddits -================= +################### + reddit.subreddits +################### .. autoclass:: praw.models.Subreddits :inherited-members: diff --git a/docs/code_overview/reddit/user.rst b/docs/code_overview/reddit/user.rst index 160e6b405..15cc8521e 100644 --- a/docs/code_overview/reddit/user.rst +++ b/docs/code_overview/reddit/user.rst @@ -1,5 +1,6 @@ -reddit.user -=========== +############# + reddit.user +############# .. autoclass:: praw.models.User :inherited-members: diff --git a/docs/code_overview/reddit_instance.rst b/docs/code_overview/reddit_instance.rst index 929711a66..18decb122 100644 --- a/docs/code_overview/reddit_instance.rst +++ b/docs/code_overview/reddit_instance.rst @@ -1,5 +1,6 @@ -The Reddit Instance -=================== +##################### + The Reddit Instance +##################### .. autoclass:: praw.Reddit :inherited-members: diff --git a/docs/genindex.rst b/docs/genindex.rst index 9e530fa2f..84fac4818 100644 --- a/docs/genindex.rst +++ b/docs/genindex.rst @@ -1,2 +1,3 @@ -Index -===== +####### + Index +####### diff --git a/docs/getting_started/authentication.rst b/docs/getting_started/authentication.rst index 56df2586e..20252dedb 100644 --- a/docs/getting_started/authentication.rst +++ b/docs/getting_started/authentication.rst @@ -1,7 +1,8 @@ .. _oauth: -Authenticating via OAuth -======================== +########################## + Authenticating via OAuth +########################## PRAW supports all three types of applications that can be registered on Reddit. Those are: @@ -34,8 +35,9 @@ defines which application types can use which flows: .. _password_flow: -Password Flow -------------- +*************** + Password Flow +*************** **Password Flow** is the simplest type of authentication flow to work with because no callback process is involved in obtaining an ``access_token``. @@ -89,7 +91,7 @@ The output should contain the same name as you entered for ``username``. .. _2fa: Two-Factor Authentication -~~~~~~~~~~~~~~~~~~~~~~~~~ +========================= A 2FA token can be used by joining it to the password with a colon: @@ -113,8 +115,9 @@ be raised by API calls after one hour. .. _code_flow: -Code Flow ---------- +*********** + Code Flow +*********** A **code flow** application is useful for two primary purposes: @@ -139,7 +142,7 @@ involved in obtaining access or refresh tokens. .. _auth_url: Obtain the Authorization URL -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +============================ The first step to completing the **code flow** is to obtain the authorization URL. You can do that as follows: @@ -182,8 +185,9 @@ one change: set the value of ``client_secret`` to ``None`` when initializing .. _implicit_flow: -Implicit Flow -------------- +*************** + Implicit Flow +*************** The **implicit flow** requires a similar instantiation of the :class:`.Reddit` class as done in :ref:`code_flow`, however, the token is returned directly as part of the @@ -198,8 +202,9 @@ instance. .. _read_only_application: -Read-Only Mode --------------- +**************** + Read-Only Mode +**************** All application types support a read-only mode. Read-only mode provides access to Reddit like a logged out user would see including the default subreddits in the @@ -221,14 +226,14 @@ Read-only mode can be toggled via: reddit.read_only = False Application-Only Flows -~~~~~~~~~~~~~~~~~~~~~~ +====================== The following flows are the **read-only mode** flows for Reddit applications .. _application_only_client_credentials_flow: Application-Only (Client Credentials) -+++++++++++++++++++++++++++++++++++++ +------------------------------------- This is the default flow for **read-only mode** in script and web applications. The idea behind this is that Reddit *can* trust these applications as coming from a given @@ -241,7 +246,7 @@ applications are not considered confidential clients. .. _application_only_installed_client_flow: Application-Only (Installed Client) -+++++++++++++++++++++++++++++++++++ +----------------------------------- This is the default flow for **read-only mode** in installed applications. The idea behind this is that Reddit *might not be able* to trust these applications as coming @@ -260,8 +265,9 @@ such as in installed applications where the end user could retrieve the ``client .. _using_refresh_tokens: -Using a Saved Refresh Token ---------------------------- +***************************** + Using a Saved Refresh Token +***************************** A saved refresh token can be used to immediately obtain an authorized instance of :class:`.Reddit` like so: diff --git a/docs/getting_started/configuration.rst b/docs/getting_started/configuration.rst index f06f8df53..987332c21 100644 --- a/docs/getting_started/configuration.rst +++ b/docs/getting_started/configuration.rst @@ -1,7 +1,8 @@ .. _configuration: -Configuring PRAW -================ +################## + Configuring PRAW +################## .. toctree:: :maxdepth: 2 @@ -20,8 +21,9 @@ Configuration options can be provided to PRAW in one of three ways: Environment variables have the highest priority, followed by keyword arguments to :class:`.Reddit`, and finally settings in ``praw.ini`` files. -Using an HTTP or HTTPS proxy with PRAW --------------------------------------- +**************************************** + Using an HTTP or HTTPS proxy with PRAW +**************************************** PRAW internally relies upon the requests_ package to handle HTTP requests. Requests supports use of ``HTTP_PROXY`` and ``HTTPS_PROXY`` environment variables in order to @@ -38,8 +40,9 @@ variable can be provided on the command line like so: HTTPS_PROXY=http://localhost:3128 ./prawbot.py -Configuring a custom requests Session -------------------------------------- +*************************************** + Configuring a custom requests Session +*************************************** PRAW uses requests_ to handle networking. If your use-case requires custom configuration, it is possible to configure a custom Session_ instance and then use it diff --git a/docs/getting_started/configuration/environment_variables.rst b/docs/getting_started/configuration/environment_variables.rst index ff33b7695..86f1e44bc 100644 --- a/docs/getting_started/configuration/environment_variables.rst +++ b/docs/getting_started/configuration/environment_variables.rst @@ -1,7 +1,8 @@ .. _environment_variables: -PRAW Environment Variables -========================== +############################ + PRAW Environment Variables +############################ The second-highest priority configuration options can be passed to a program via environment variables prefixed with ``praw_``. diff --git a/docs/getting_started/configuration/options.rst b/docs/getting_started/configuration/options.rst index c99a4051c..843b30acc 100644 --- a/docs/getting_started/configuration/options.rst +++ b/docs/getting_started/configuration/options.rst @@ -1,7 +1,8 @@ .. _configuration_options: -Configuration Options -===================== +####################### + Configuration Options +####################### PRAW's configuration options are broken down into the following categories: @@ -16,8 +17,9 @@ All of these options can be provided in any of the ways mentioned in .. _basic_options: -Basic Configuration Options ---------------------------- +***************************** + Basic Configuration Options +***************************** :check_for_updates: When ``true``, check for new versions of PRAW. When a newer version of PRAW is available a message is reported via standard error (default: ``true``). @@ -28,8 +30,9 @@ Basic Configuration Options .. _oauth_options: -OAuth Configuration Options ---------------------------- +***************************** + OAuth Configuration Options +***************************** :client_id: (Required) The OAuth client ID associated with your registered Reddit application. See :ref:`oauth` for instructions on registering a Reddit application. @@ -48,8 +51,9 @@ OAuth Configuration Options .. _site_options: -Reddit Site Configuration Options ---------------------------------- +*********************************** + Reddit Site Configuration Options +*********************************** PRAW can be configured to work with instances of Reddit which are not hosted at `reddit.com `_. The following options may need to be updated in @@ -75,8 +79,9 @@ order to successfully access a third-party Reddit site: .. _misc_options: -Miscellaneous Configuration Options ------------------------------------ +************************************* + Miscellaneous Configuration Options +************************************* These are options that do not belong in another category, but still play a part in PRAW. @@ -101,8 +106,9 @@ These are options that do not belong in another category, but still play a part .. _custom_options: -Custom Configuration Options ----------------------------- +****************************** + Custom Configuration Options +****************************** Your application can utilize PRAW's configuration system in order to provide its own custom settings. diff --git a/docs/getting_started/configuration/prawini.rst b/docs/getting_started/configuration/prawini.rst index 7fe2fdee7..cce6a1206 100644 --- a/docs/getting_started/configuration/prawini.rst +++ b/docs/getting_started/configuration/prawini.rst @@ -1,7 +1,8 @@ .. _praw.ini: -praw.ini Files -============== +################ + praw.ini Files +################ PRAW comes with a ``praw.ini`` file in the package directory, and looks for user defined ``praw.ini`` files in a few other locations: @@ -51,8 +52,9 @@ PRAW comes with a ``praw.ini`` file in the package directory, and looks for user print(os.environ.get("", "")) -Format of praw.ini ------------------- +******************** + Format of praw.ini +******************** ``praw.ini`` uses the `INI file format `_, which can contain multiple groups of settings separated into sections. PRAW refers to each @@ -69,8 +71,9 @@ The contents of the package's ``praw.ini`` file are: values in your own ``praw.ini`` file. You can even override settings of the ``DEFAULT`` site in user defined ``praw.ini`` files. -Defining Additional Sites -------------------------- +*************************** + Defining Additional Sites +*************************** In addition to the ``DEFAULT`` site, additional sites can be configured in user defined ``praw.ini`` files. All sites inherit settings from the ``DEFAULT`` site and can @@ -102,8 +105,9 @@ you have three separate bots, you might create a site for each: password=invalidlfo00esyy username=fakebot3 -Choosing a Site ---------------- +***************** + Choosing a Site +***************** Site selection is done via the ``site_name`` parameter to :class:`.Reddit`. For example, to use the settings defined for ``bot2`` as shown above, initialize :class:`.Reddit` @@ -121,8 +125,9 @@ like so: A site can also be selected via a ``praw_site`` environment variable. This approach has precedence over the ``site_name`` parameter described above. -Using Interpolation -------------------- +********************* + Using Interpolation +********************* By default PRAW doesn't apply any interpolation on the config file but this can be changed with the ``config_interpolation`` parameter which can be set to "basic" or diff --git a/docs/getting_started/configuration/reddit_initialization.rst b/docs/getting_started/configuration/reddit_initialization.rst index 098e33785..371697512 100644 --- a/docs/getting_started/configuration/reddit_initialization.rst +++ b/docs/getting_started/configuration/reddit_initialization.rst @@ -1,7 +1,8 @@ .. _reddit_initialization: -Keyword Arguments to :class:`.Reddit` -===================================== +####################################### + Keyword Arguments to :class:`.Reddit` +####################################### Most of PRAW's documentation will demonstrate configuring PRAW through the use of keyword arguments when initializing instances of :class:`.Reddit`. All of the diff --git a/docs/getting_started/faq.rst b/docs/getting_started/faq.rst index e91cb9d65..85fa3e352 100644 --- a/docs/getting_started/faq.rst +++ b/docs/getting_started/faq.rst @@ -1,5 +1,6 @@ -Frequently Asked Questions -========================== +############################ + Frequently Asked Questions +############################ .. _faq1: diff --git a/docs/getting_started/installation.rst b/docs/getting_started/installation.rst index 2f7a51445..4472bc6be 100644 --- a/docs/getting_started/installation.rst +++ b/docs/getting_started/installation.rst @@ -1,5 +1,6 @@ -Installing PRAW -=============== +################# + Installing PRAW +################# PRAW supports Python 3.9+. The recommended way to install PRAW is via ``pip``. @@ -19,8 +20,9 @@ PRAW supports Python 3.9+. The recommended way to install PRAW is via ``pip``. For instructions on installing Python and pip see "The Hitchhiker's Guide to Python" `Installation Guides `_. -Updating PRAW -------------- +*************** + Updating PRAW +*************** PRAW can be updated by running: @@ -28,8 +30,9 @@ PRAW can be updated by running: pip install --upgrade praw -Installing Older Versions -------------------------- +*************************** + Installing Older Versions +*************************** Older versions of PRAW can be installed by specifying the version number as part of the installation command: @@ -38,8 +41,9 @@ installation command: pip install praw==3.6.0 -Installing the Latest Development Version ------------------------------------------ +******************************************* + Installing the Latest Development Version +******************************************* Is there a feature that was recently merged into PRAW that you cannot wait to take advantage of? If so, you can install PRAW directly from GitHub like so: diff --git a/docs/getting_started/logging.rst b/docs/getting_started/logging.rst index 71a613c08..88b1e32ff 100644 --- a/docs/getting_started/logging.rst +++ b/docs/getting_started/logging.rst @@ -1,5 +1,6 @@ -Logging in PRAW -=============== +################# + Logging in PRAW +################# It is occasionally useful to observe the HTTP requests that PRAW is issuing. To do so you have to configure and enable logging. diff --git a/docs/getting_started/multiple_instances.rst b/docs/getting_started/multiple_instances.rst index f9dd2683e..bd8a07bf2 100644 --- a/docs/getting_started/multiple_instances.rst +++ b/docs/getting_started/multiple_instances.rst @@ -1,5 +1,6 @@ -Running Multiple Instances of PRAW -================================== +#################################### + Running Multiple Instances of PRAW +#################################### PRAW, as of version 4, performs rate limiting dynamically based on the HTTP response headers from Reddit. As a result you can safely run a handful of PRAW instances without @@ -14,8 +15,9 @@ any additional configuration. If you are authorized on other users' behalf, each authorization should have its own rate limit, even when running from a single IP address. -Discord Bots and Asynchronous Environments ------------------------------------------- +******************************************** + Discord Bots and Asynchronous Environments +******************************************** If you plan on using PRAW in an asynchronous environment, (e.g., discord.py, asyncio) it is strongly recommended to use `Async PRAW `_. It is @@ -34,8 +36,9 @@ features as PRAW. reddit = praw.Reddit(..., check_for_async=False) -Multiple Programs ------------------ +******************* + Multiple Programs +******************* The recommended way to run multiple instances of PRAW is to simply write separate independent Python programs. With this approach one program can monitor a comment stream @@ -44,8 +47,9 @@ and reply as needed, and another program can monitor a submission stream, for ex If these programs need to share data consider using a third-party system such as a database or queuing system. -Multiple Threads ----------------- +****************** + Multiple Threads +****************** .. warning:: diff --git a/docs/getting_started/quick_start.rst b/docs/getting_started/quick_start.rst index 811cc582d..4416eeceb 100644 --- a/docs/getting_started/quick_start.rst +++ b/docs/getting_started/quick_start.rst @@ -1,11 +1,13 @@ -Quick Start -=========== +############# + Quick Start +############# In this section, we go over everything you need to know to start building scripts or bots using PRAW, the Python Reddit API Wrapper. It's fun and easy. Let's get started. -Prerequisites -------------- +*************** + Prerequisites +*************** :Python Knowledge: You need to know at least a little Python to use PRAW. PRAW supports `Python 3.9+`_. If you are stuck on a problem, `r/learnpython`_ is a great place to @@ -39,11 +41,12 @@ Prerequisites With these prerequisites satisfied, you are ready to learn how to do some of the most common tasks with Reddit's API. -Common Tasks ------------- +************** + Common Tasks +************** Obtain a :class:`.Reddit` Instance -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +================================== .. warning:: @@ -60,7 +63,7 @@ and :ref:`authorized `. .. _read-only: Read-only :class:`.Reddit` Instances -++++++++++++++++++++++++++++++++++++ +------------------------------------ To create a read-only :class:`.Reddit` instance, you need three pieces of information: @@ -115,7 +118,7 @@ authorized :class:`.Reddit` instance. .. _authorized: Authorized :class:`.Reddit` Instances -+++++++++++++++++++++++++++++++++++++ +------------------------------------- In order to create an authorized :class:`.Reddit` instance, two additional pieces of information are required for **script** applications (see :ref:`oauth` for other @@ -156,7 +159,7 @@ to read-only mode whenever you want: some options available to you. Please see: :ref:`configuration`. Obtain a :class:`.Subreddit` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +============================ To obtain a :class:`.Subreddit` instance, pass the subreddit's name when calling ``subreddit`` on your :class:`.Reddit` instance. For example: @@ -174,7 +177,7 @@ To obtain a :class:`.Subreddit` instance, pass the subreddit's name when calling # Output: a subreddit for discussion of ... Obtain :class:`.Submission` Instances from a :class:`.Subreddit` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +================================================================ Now that you have a :class:`.Subreddit` instance, you can iterate through some of its submissions, each bound to an instance of :class:`.Submission`. There are several sorts @@ -224,7 +227,7 @@ You can create :class:`.Submission` instances in other ways too: submission = reddit.submission(url="https://www.reddit.com/...") Obtain :class:`.Redditor` Instances -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +=================================== There are several ways to obtain a redditor (a :class:`.Redditor` instance). Two of the most common ones are: @@ -247,7 +250,7 @@ For example: # Output: u/bboe's karma Obtain :class:`.Comment` Instances -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +================================== Submissions have a ``comments`` attribute that is a :class:`.CommentForest` instance. That instance is iterable and represents the top-level comments of the submission by the @@ -285,7 +288,7 @@ updated. See :ref:`extracting_comments` for an example. .. _determine-available-attributes-of-an-object: Determine Available Attributes of an Object -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +=========================================== If you have a PRAW object, e.g., :class:`.Comment`, :class:`.Message`, :class:`.Redditor`, or :class:`.Submission`, and you want to see what attributes are diff --git a/docs/getting_started/ratelimits.rst b/docs/getting_started/ratelimits.rst index 639d9da68..31fba930c 100644 --- a/docs/getting_started/ratelimits.rst +++ b/docs/getting_started/ratelimits.rst @@ -1,7 +1,8 @@ .. _ratelimits: -Ratelimits -========== +############ + Ratelimits +############ Even though PRAW respects the |ratelimit_header|_ and waits the appropriate time between requests, there are other unknown ratelimits that Reddit has that might require diff --git a/docs/index.rst b/docs/index.rst index 89ded731f..a0d2342d5 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,5 +1,6 @@ -PRAW: The Python Reddit API Wrapper -=================================== +##################################### + PRAW: The Python Reddit API Wrapper +##################################### PRAW's documentation is organized into the following sections: @@ -8,8 +9,9 @@ PRAW's documentation is organized into the following sections: - :ref:`tutorial` - :ref:`package_info` -Documentation Conventions -------------------------- +*************************** + Documentation Conventions +*************************** Unless otherwise mentioned, all examples in this document assume the use of a **script** application. See :ref:`oauth` for information on using **installed** applications and diff --git a/docs/package_info/contributing.rst b/docs/package_info/contributing.rst index e36f65001..9ed7a7901 100644 --- a/docs/package_info/contributing.rst +++ b/docs/package_info/contributing.rst @@ -1,18 +1,20 @@ -Contributing to PRAW -==================== +###################### + Contributing to PRAW +###################### PRAW gladly welcomes new contributions. As with most larger projects, we have an established consistent way of doing things. A consistent style increases readability, decreases bug-potential and makes it faster to understand how everything works together. -Setting Up Your Development Environment ---------------------------------------- +***************************************** + Setting Up Your Development Environment +***************************************** This section will cover the recommended steps to get you started with contributing to PRAW. Create a Virtual Environment -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +============================ It is strongly recommended to use a virtual environment to isolate your development environment. This is a good idea because it will make managing the needed dependencies @@ -42,7 +44,7 @@ following: .. _install_dev_deps: Install Development Dependencies -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +================================ Next, you will need to install the dependencies development dependencies. This is done by running the following: @@ -66,11 +68,12 @@ by running the following: easier testing and debugging. The ``[dev]`` extra will install all development dependencies. This includes the dependencies for both linting and testing. -Code Style ----------- +************ + Code Style +************ Linting -~~~~~~~ +======= PRAW follows :PEP:`8` and :PEP:`257` and some :ref:`praw_specific_guidelines`. pre-commit_ is used to manage a suite of pre-commit hooks that enforce conformance with @@ -104,7 +107,7 @@ To run all the needed checks and to ensure the docs build correctly, run the fol .. _praw_specific_guidelines: PRAW Specific Style Guidelines -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +============================== The following are PRAW-specific guidelines in addition to the PEPs specified in Linting_: @@ -171,15 +174,16 @@ Linting_: url=None, ): ... -Testing -------- +********* + Testing +********* Contributions to PRAW requires 100% test coverage. If you know how to add a feature, but aren't sure how to write the necessary tests, please open a pull request anyway so we can work with you to write the necessary tests. Running the Test Suite -~~~~~~~~~~~~~~~~~~~~~~ +====================== `GitHub Actions`_ automatically runs all updates to known branches and pull requests. However, it's useful to be able to run the tests locally. The simplest way is via: @@ -192,7 +196,7 @@ Without any configuration or modification, all the tests should pass. If they do please file a bug report. Adding and Updating Integration Tests -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +===================================== PRAW's integration tests utilize Betamax_ to record an interaction with Reddit. The recorded interaction is then replayed for subsequent test runs. @@ -257,8 +261,9 @@ Examples: @pytest.mark.add_placeholder(generated_data_b=generate_data_b()) def test_example__with_generated_placeholders(self): ... -Documentation -------------- +*************** + Documentation +*************** - All publicly available functions, classes, and modules should have a docstring. - All documentation files and docstrings should be linted and formatted by @@ -268,7 +273,7 @@ Documentation name. Static Checker -~~~~~~~~~~~~~~ +============== PRAW's test suite comes with a checker tool that can warn you of using incorrect documentation styles (using ``.. code::`` instead of ``.. code-block::``, using ``/r/`` @@ -278,25 +283,27 @@ instead of ``r/``, etc.). This is run automatically by the pre-commit hooks and .. autoclass:: tools.static_word_checks.StaticChecker :inherited-members: -Files to Update ---------------- +***************** + Files to Update +***************** AUTHORS.rst -~~~~~~~~~~~ +=========== For your first contribution, please add yourself to the end of the respective list in the ``AUTHORS.rst`` file. CHANGES.rst -~~~~~~~~~~~ +=========== For feature additions, bug fixes, or code removal please add an appropriate entry to ``CHANGES.rst``. If the ``Unreleased`` section does not exist at the top of ``CHANGES.rst`` please add it. See `commit 280525c16ba28cdd69cdbb272a0e2764b1c7e6a0`_ for an example. -See Also --------- +********** + See Also +********** Please also read the `Contributing Guidelines`_ diff --git a/docs/package_info/glossary.rst b/docs/package_info/glossary.rst index 7e57b645c..c2e2cd5b1 100644 --- a/docs/package_info/glossary.rst +++ b/docs/package_info/glossary.rst @@ -1,5 +1,6 @@ -Glossary -======== +########## + Glossary +########## .. _access_token: @@ -14,27 +15,21 @@ Glossary Here is a list of the six different types of objects returned from Reddit: - .. _fullname_t1: - ``t1`` These objects represent :class:`.Comment`\ s. - .. _fullname_t2: - ``t2`` These objects represent :class:`.Redditor`\ s. - .. _fullname_t3: - ``t3`` These objects represent :class:`.Submission`\ s. - .. _fullname_t4: - ``t4`` These objects represent :class:`.Message`\ s. - .. _fullname_t5: - ``t5`` These objects represent :class:`.Subreddit`\ s. - .. _fullname_t6: - ``t6`` These objects represent :class:`.Trophy`\ s. diff --git a/docs/package_info/references.rst b/docs/package_info/references.rst index 8203e101b..69bd36397 100644 --- a/docs/package_info/references.rst +++ b/docs/package_info/references.rst @@ -1,5 +1,6 @@ -References -========== +############ + References +############ - `PRAW Source Code `_. - `Reddit Source Code `_. This repository has been diff --git a/docs/tutorials/comments.rst b/docs/tutorials/comments.rst index e61657f71..c5e8af943 100644 --- a/docs/tutorials/comments.rst +++ b/docs/tutorials/comments.rst @@ -1,5 +1,6 @@ -Comment Extraction and Parsing -============================== +################################ + Comment Extraction and Parsing +################################ A common use for Reddit's API is to extract comments from submissions and use them to perform keyword or phrase analysis. @@ -29,8 +30,9 @@ to one or more specific subreddits, please see :meth:`.SubredditStream.comments` .. _extracting_comments: -Extracting comments with PRAW ------------------------------ +******************************* + Extracting comments with PRAW +******************************* Assume we want to process the comments for this submission: https://www.reddit.com/r/funny/comments/3g1jfi/buttons/ @@ -75,8 +77,9 @@ could ignore :class:`.MoreComments` in our code, like so: continue print(top_level_comment.body) -The ``replace_more`` method ---------------------------- +***************************** + The ``replace_more`` method +***************************** In the previous snippet, we used :py:func:`isinstance` to check whether the item in the comment list was a :class:`.MoreComments` so that we could ignore it. But there is a diff --git a/docs/tutorials/refresh_token.rst b/docs/tutorials/refresh_token.rst index 97973f26a..79a7cd565 100644 --- a/docs/tutorials/refresh_token.rst +++ b/docs/tutorials/refresh_token.rst @@ -1,10 +1,12 @@ .. _refresh_token: -Working with Refresh Tokens -=========================== +############################# + Working with Refresh Tokens +############################# -Reddit OAuth2 Scopes --------------------- +********************** + Reddit OAuth2 Scopes +********************** Before working with refresh tokens you should decide which scopes your application requires. If you want to use all scopes, you can use the special scope ``*``. @@ -68,8 +70,9 @@ wikiedit Edit wiki pages on my behalf wikiread Read wiki pages through my account ================ ====================================================================== -Obtaining Refresh Tokens ------------------------- +************************** + Obtaining Refresh Tokens +************************** The following program can be used to obtain a refresh token with the desired scopes: diff --git a/docs/tutorials/reply_bot.rst b/docs/tutorials/reply_bot.rst index 74360fa8b..c5de08919 100644 --- a/docs/tutorials/reply_bot.rst +++ b/docs/tutorials/reply_bot.rst @@ -1,5 +1,6 @@ -Submission Stream Reply Bot -=========================== +############################# + Submission Stream Reply Bot +############################# Most redditors have seen bots in action on the site. Reddit bots can perform a number of tasks including providing useful information, e.g., an Imperial to Metric units bot; @@ -21,8 +22,9 @@ There are three key components we will address to perform this task: 2. Analyze the title of each submission to see if it contains a simple question. 3. Reply with an appropriate lmgtfy_ link. -LMGTFY Bot ----------- +************ + LMGTFY Bot +************ The goal of the LMGTFY Bot is to point users in the right direction when they ask a simple question that is unlikely to be upvoted or answered by other users. @@ -39,7 +41,7 @@ appropriate lmgtfy_ link. For the example questions those links are: 2. https://lmgtfy.com/?q=How+many+feet+are+in+a+yard%3F Step 1: Getting Started -~~~~~~~~~~~~~~~~~~~~~~~ +======================= Access to Reddit's API requires a set of OAuth2 credentials. Those credentials are obtained by registering an application with Reddit. To register an application and @@ -71,7 +73,7 @@ that registered the application are required. `_. Step 2: Monitoring New Submissions to r/AskReddit -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +================================================= PRAW provides a convenient way to obtain new submissions to a given subreddit. To indefinitely iterate over new submissions to a subreddit add: @@ -91,7 +93,7 @@ from the special ``"all"`` subreddit by joining them with minuses (``-``), for e ``"all-excluded_subreddit1-excluded_subreddit2"``. Step 3: Analyzing the Submission Titles -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +======================================= Now that we have a stream of new submissions to r/AskReddit, it is time to see if their titles contain a simple question. We naïvely define a simple question as: @@ -132,7 +134,7 @@ submission. For instance, what would happen without the ``break`` if a submissio title was "Who is or what are buffalo?"? Step 4: Automatically Replying to the Submission -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +================================================ The LMGTFY Bot is nearly complete. We iterate through submissions and find ones that appear to be simple questions. All that is remaining is to reply to those submissions @@ -173,7 +175,7 @@ you will likely run into rate limit issues. These rate limits will persist until account acquires sufficient karma. Step 5: Cleaning Up The Code -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +============================ While we have a working bot, we have added little segments here and there. If we were to continue to do so in this fashion our code would be quite unreadable. Let's clean it up @@ -220,7 +222,7 @@ executed: :lines: 40- The Complete LMGTFY Bot -~~~~~~~~~~~~~~~~~~~~~~~ +======================= The following is the complete LMGTFY Bot: