Ë
    Fü´j"·  ã            	      óÔ  — d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlZddlmZ dd	lmZ dd
lmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=m>Z> ddl?m@Z@ e	rddlAmBZBmCZC ddlDZDddlDmEZE ddlFmGZG  G d „ d!e%ee$e#e«      ZHeHe>_I        y)"zProvide the Subreddit class.é    )Úannotations)ÚdumpsÚloads)ÚPath)ÚTYPE_CHECKINGÚAnyÚcastÚoverload)ÚurljoinN)ÚRedirect)ÚAPI_PATH)ÚMediaPostFailedÚRedditAPIExceptionÚWebSocketException)ÚListingGenerator)ÚSubredditListingMixin)Ú	PostMedia)Ú
RedditBase©ÚSubredditEmoji)ÚCreatedMixinÚFullnameMixinÚMessageableMixin©ÚSubredditRules©ÚSubredditFilters©ÚSubredditFlair©ÚSubredditModeration©ÚModmail©ÚSubredditQuarantine)ÚContributorRelationshipÚModeratorRelationshipÚSubredditRelationship©ÚSubredditStream©ÚSubredditStylesheet©ÚSubredditWiki)ÚSubredditWidgetsÚWidgetEncoder)Úcachedproperty)ÚIteratorÚSequence)Úmodels)ÚSubredditCollectionsc            #      óü  ‡ — e Zd ZU dZdZdZdZded<   ded<   d	ed
<   eddddddddddddddddddddddddddddddddddœ!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dFd„«       Z	e	 	 	 	 	 	 dGd„«       Z
edHd„«       ZedId„«       ZedJd„«       ZedKd„«       ZedLd„«       ZedMd„«       ZedNd„«       ZedOd„«       ZedPd„«       ZedQd„«       ZedRd„«       ZedJd„«       ZedSd„«       ZedTd„«       ZedUd„«       ZedVd„«       ZedWd„«       ZedXd „«       ZedYd!„«       Z	 	 dZ	 	 	 	 	 	 	 d[ˆ fd"„Z d\d#„Z!d]ˆ fd$„Z"d^d%„Z#	 	 	 	 	 	 	 	 d_d&„Z$d`d'„Z%dad(„Z&d)d*d+d,œ	 	 	 	 	 	 	 	 	 	 	 dbd-„Z'd.d/œdcd0„Z(e)d1d1d1d1d1d1d1d1d1d1d2œ
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddd3„«       Z*e)d1d1d1d1d1d1d1d1d1d1d4œ
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ded5„«       Z*e)d1d1d1d1d1d1d1d1d1d1d1d6œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dfd7„«       Z*e)d1d1d1d1d1d1d1d1d8œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dgd9„«       Z*e)d1d1d1d1d1d1d1d1d1d:œ		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dhd;„«       Z*e)d1d1d1d1d1d1d1d1d1d1d1d6œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 did<„«       Z*ddddddddd=dd>dd>d=d?ddd=d@œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 djdA„Z*ddBœdkdC„Z+dldD„Z,ddBœdkdE„Z-ˆ xZ.S )mÚ	SubredditaL  A class for Subreddits.

    To obtain an instance of this class for r/test execute:

    .. code-block:: python

        subreddit = reddit.subreddit("test")

    While r/all is not a real subreddit, it can still be treated like one. The following
    outputs the titles of the 25 hottest submissions in r/all:

    .. code-block:: python

        for submission in reddit.subreddit("all").hot(limit=25):
            print(submission.title)

    Multiple subreddits can be combined with a ``+`` like so:

    .. code-block:: python

        for submission in reddit.subreddit("redditdev+learnpython").top(time_filter="all"):
            print(submission)

    Subreddits can be filtered from combined listings as follows.

    .. note::

        These filters are ignored by certain methods, including :attr:`.comments`, and
        :meth:`.SubredditStream.comments`.

    .. code-block:: python

        for submission in reddit.subreddit("all-redditdev").new():
            print(submission)

    .. include:: ../../typical_attributes.rst

    ========================= ==========================================================
    Attribute                 Description
    ========================= ==========================================================
    ``can_assign_link_flair`` Whether users can assign their own link flair.
    ``can_assign_user_flair`` Whether users can assign their own user flair.
    ``created_utc``           Time the subreddit was created, represented in `Unix
                              Time`_.
    ``description``           Subreddit description, in Markdown.
    ``description_html``      Subreddit description, in HTML.
    ``display_name``          Name of the subreddit.
    ``icon_img``              The URL of the subreddit icon image.
    ``id``                    ID of the subreddit.
    ``name``                  Fullname of the subreddit.
    ``over18``                Whether the subreddit is NSFW.
    ``public_description``    Description of the subreddit, shown in searches and on the
                              "You must be invited to visit this community" page (if
                              applicable).
    ``spoilers_enabled``      Whether the spoiler tag feature is enabled.
    ``subscribers``           Count of subscribers.
    ``user_is_banned``        Whether the authenticated user is banned.
    ``user_is_moderator``     Whether the authenticated user is a moderator.
    ``user_is_subscriber``    Whether the authenticated user is subscribed.
    ========================= ==========================================================

    .. note::

        Trying to retrieve attributes of quarantined or private subreddits will result
        in a 403 error. Trying to retrieve attributes of a banned subreddit will result
        in a 404 error.

    .. _unix time: https://en.wikipedia.org/wiki/Unix_time

    é´   ú#Údisplay_nameztype[models.Submission]Ú_submission_classztype[SubredditCollections]Ú_subreddit_collections_classÚintÚlast_updatedN)!Úallow_imagesÚallow_post_crosspostsÚ	allow_topÚcollapse_deleted_commentsÚcomment_score_hide_minsÚdescriptionÚdomainÚexclude_banned_modqueueÚheader_hover_textÚhide_adsÚ	key_colorÚlangÚ	link_typeÚnameÚover_18Úpublic_descriptionÚpublic_trafficÚ
show_mediaÚshow_media_previewÚspam_commentsÚ
spam_linksÚspam_selfpostsÚspoilers_enabledÚsrÚsubmit_link_labelÚsubmit_textÚsubmit_text_labelÚsubreddit_typeÚsuggested_comment_sortÚtitleÚwiki_edit_ageÚwiki_edit_karmaÚwikimodec        "        ó(  — i d|“d|“d|“d|“d|“d|“d|“d|“d	|	“d
|
“d|“d|“d|“d|“d|“d|“d|“i d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d | “d!|!“¥}#|#j                  |"«       | j                  t        d"   |#¬#«       y )$Nr?   r@   rA   rB   rC   rD   rE   rF   zheader-titlerH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r[   r\   Útyper]   r^   r_   Ú
site_admin©Údata)ÚupdateÚpostr   )$Ú_redditr?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   Úother_settingsÚmodels$                                       úd/root/workspace/ytshorts/venv/lib/python3.12/site-packages/praw/models/reddit/subreddit/subreddit.pyÚ_create_or_updatezSubreddit._create_or_update�   sÅ  € ðN"
Ø˜Lð"
à#Ð%:ð"
ð ˜ð"
ð (Ð)Bð	"
ð
 &Ð'>ð"
ð ˜;ð"
ð �fð"
ð &Ð'>ð"
ð Ð-ð"
ð ˜ð"
ð ˜ð"
ð �Dð"
ð ˜ð"
ð �Dð"
ð �wð"
ð  !Ð"4ð!"
ð" ˜nñ#"
ð$ ˜*ð%"
ð& !Ð"4ð'"
ð( ˜]ð)"
ð* ˜*ð+"
ð, ˜nð-"
ð. Ð 0ð/"
ð0 �"ð1"
ð2  Ð!2ð3"
ð4 ˜;ð5"
ð6  Ð!2ð7"
ð8 %Ð&<ð9"
ð: �Uð;"
ð< �Nð="
ð> ˜]ð?"
ð@ ˜ðA"
ðB ˜ñC"
ˆðH 	�‰�^Ô$à�‰”X˜lÑ+°%ˆÕ8ó    c           	     ó�   — | r5dj                  t        |«      g| D �cg c]  }t        |«      ‘Œ c}z   «      S t        |«      S c c}w )Nú,)ÚjoinÚstr)Úother_subredditsÚ	subredditÚxs      rj   Ú_subreddit_listzSubreddit._subreddit_listÐ   sB   € ñ Ø—8‘8œS ›^Ð,Ð@PÖ/Q¸1´°AµÒ/QÑQÓRÐRÜ�9‹~Ðùò 0Rs   �A
c           
     óô   — | D ]s  }|j                  d«      }t        |t        «      sd}t        |«      ‚t	        t        d|j                  dd«      «      «      t        j                  k  rŒhd}t        |«      ‚ y )NÚmediaú5'media' is required and must be a PostMedia instance.rp   ÚcaptionÚ z'Caption must be 180 characters or less.)ÚgetÚ
isinstancer   Ú	TypeErrorÚlenr	   r7   ÚMAX_CAPTION_LENGTH)ÚimagesÚimagerv   Úmsgs       rj   Ú_validate_galleryzSubreddit._validate_galleryÚ   sl   € àò 	%ˆEØ—I‘I˜gÓ&ˆEÜ˜e¤YÔ/ØM�Ü “nÐ$Ü”t˜E 5§9¡9¨Y¸Ó#;Ó<Ó=Ä×A]ÑA]Ó]Ø?�Ü “nÐ$ñ	%rl   c                óR   — t        | j                  t        «      sd}t        |«      ‚y )Nz%'media' must be a PostMedia instance.)r{   rv   r   r|   )Úinline_mediar�   s     rj   Ú_validate_inline_mediaz Subreddit._validate_inline_mediaå   s&   € ä˜,×,Ñ,¬iÔ8Ø9ˆCÜ˜C“.Ð ð 9rl   c                ó   — t        | d«      S )a™  Provide an instance of :class:`.SubredditRelationship`.

        For example, to ban a user try:

        .. code-block:: python

            reddit.subreddit("test").banned.add("spez", ban_reason="...")

        To list the banned users along with any notes, try:

        .. code-block:: python

            for ban in reddit.subreddit("test").banned():
                print(f"{ban}: {ban.note}")

        Úbanned©r(   ©Úselfs    rj   r‡   zSubreddit.bannedë   s   € ô$ % T¨8Ó4Ð4rl   c                ó:   — | j                  | j                  | «      S )a­  Provide an instance of :class:`.SubredditCollections`.

        To see the permalinks of all :class:`.Collection`\ s that belong to a subreddit,
        try:

        .. code-block:: python

            for collection in reddit.subreddit("test").collections:
                print(collection.permalink)

        To get a specific :class:`.Collection` by its UUID or permalink, use one of the
        following:

        .. code-block:: python

            collection = reddit.subreddit("test").collections("some_uuid")
            collection = reddit.subreddit("test").collections(
                permalink="https://reddit.com/r/SUBREDDIT/collection/some_uuid"
            )

        )r<   rg   r‰   s    rj   ÚcollectionszSubreddit.collectionsÿ   s   € ð. ×0Ñ0°·±¸tÓDÐDrl   c                ó   — t        | d«      S )a  Provide an instance of :class:`.ContributorRelationship`.

        Contributors are also known as approved submitters.

        To add a contributor try:

        .. code-block:: python

            reddit.subreddit("test").contributor.add("spez")

        Úcontributor)r&   r‰   s    rj   rŽ   zSubreddit.contributor  s   € ô ' t¨]Ó;Ð;rl   c                ó   — t        | «      S )a  Provide an instance of :class:`.SubredditEmoji`.

        This attribute can be used to discover all emoji for a subreddit:

        .. code-block:: python

            for emoji in reddit.subreddit("test").emoji:
                print(emoji)

        A single emoji can be lazily retrieved via:

        .. code-block:: python

            reddit.subreddit("test").emoji["emoji_name"]

        .. note::

            Attempting to access attributes of a nonexistent emoji will result in a
            :class:`.ClientException`.

        r   r‰   s    rj   ÚemojizSubreddit.emoji'  ó   € ô. ˜dÓ#Ð#rl   c                ó   — t        | «      S )zÁProvide an instance of :class:`.SubredditFilters`.

        For example, to add a filter, run:

        .. code-block:: python

            reddit.subreddit("all").filters.add("test")

        r   r‰   s    rj   ÚfilterszSubreddit.filters@  s   € ô   Ó%Ð%rl   c                ó   — t        | «      S )aS  Provide an instance of :class:`.SubredditFlair`.

        Use this attribute for interacting with a :class:`.Subreddit`'s flair. For
        example, to list all the flair for a subreddit which you have the ``flair``
        moderator permission on try:

        .. code-block:: python

            for flair in reddit.subreddit("test").flair():
                print(flair)

        Flair templates can be interacted with through this attribute via:

        .. code-block:: python

            for template in reddit.subreddit("test").flair.templates:
                print(template)

        r   r‰   s    rj   ÚflairzSubreddit.flairM  s   € ô* ˜dÓ#Ð#rl   c                ó   — t        | «      S )zÚProvide an instance of :class:`.SubredditModeration`.

        For example, to accept a moderation invite from r/test:

        .. code-block:: python

            reddit.subreddit("test").mod.accept_invite()

        r    r‰   s    rj   ÚmodzSubreddit.modd  s   € ô # 4Ó(Ð(rl   c                ó   — t        | d«      S )a´  Provide an instance of :class:`.ModeratorRelationship`.

        For example, to add a moderator try:

        .. code-block:: python

            reddit.subreddit("test").moderator.add("spez")

        To list the moderators along with their permissions try:

        .. code-block:: python

            for moderator in reddit.subreddit("test").moderator():
                print(f"{moderator}: {moderator.mod_permissions}")

        Ú	moderator)r'   r‰   s    rj   r™   zSubreddit.moderatorq  s   € ô$ % T¨;Ó7Ð7rl   c                ó   — t        | «      S )aH  Provide an instance of :class:`.Modmail`.

        For example, to send a new modmail from r/test to u/spez with the subject
        ``"test"`` along with a message body of ``"hello"``:

        .. code-block:: python

            reddit.subreddit("test").modmail.create(subject="test", body="hello", recipient="spez")

        r"   r‰   s    rj   ÚmodmailzSubreddit.modmail…  s   € ô �t‹}Ðrl   c                ó   — t        | d«      S )a  Provide an instance of :class:`.SubredditRelationship`.

        For example, muted users can be iterated through like so:

        .. code-block:: python

            for mute in reddit.subreddit("test").muted():
                print(f"{mute}: {mute.date}")

        Úmutedrˆ   r‰   s    rj   r�   zSubreddit.muted“  s   € ô % T¨7Ó3Ð3rl   c                ó   — t        | «      S )a{  Provide an instance of :class:`.SubredditQuarantine`.

        This property is named ``quaran`` because ``quarantine`` is a subreddit
        attribute returned by Reddit to indicate whether or not a subreddit is
        quarantined.

        To opt-in into a quarantined subreddit:

        .. code-block:: python

            reddit.subreddit("test").quaran.opt_in()

        r$   r‰   s    rj   ÚquaranzSubreddit.quaran¡  ó   € ô # 4Ó(Ð(rl   c                ó   — t        | «      S )ar  Provide an instance of :class:`.SubredditRules`.

        Use this attribute for interacting with a :class:`.Subreddit`'s rules.

        For example, to list all the rules for a subreddit:

        .. code-block:: python

            for rule in reddit.subreddit("test").rules:
                print(rule)

        Moderators can also add rules to the subreddit. For example, to make a rule
        called ``"No spam"`` in r/test:

        .. code-block:: python

            reddit.subreddit("test").rules.mod.add(
                short_name="No spam", kind="all", description="Do not spam. Spam bad"
            )

        r   r‰   s    rj   ÚruleszSubreddit.rules²  r‘   rl   c                ó   — t        | «      S )aS  Provide an instance of :class:`.SubredditStream`.

        Streams can be used to indefinitely retrieve new comments made to a subreddit,
        like:

        .. code-block:: python

            for comment in reddit.subreddit("test").stream.comments():
                print(comment)

        Additionally, new submissions can be retrieved via the stream. In the following
        example all submissions are fetched via the special r/all:

        .. code-block:: python

            for submission in reddit.subreddit("all").stream.submissions():
                print(submission)

        r)   r‰   s    rj   ÚstreamzSubreddit.streamË  s   € ô* ˜tÓ$Ð$rl   c                ó   — t        | «      S )a�  Provide an instance of :class:`.SubredditStylesheet`.

        For example, to add the css data ``.test{color:blue}`` to the existing
        stylesheet:

        .. code-block:: python

            subreddit = reddit.subreddit("test")
            stylesheet = subreddit.stylesheet()
            stylesheet.stylesheet += ".test{color:blue}"
            subreddit.stylesheet.update(stylesheet.stylesheet)

        r+   r‰   s    rj   Ú
stylesheetzSubreddit.stylesheetâ  r    rl   c                ó   — t        | «      S )av  Provide an instance of :class:`.SubredditWidgets`.

        **Example usage**

        Get all sidebar widgets:

        .. code-block:: python

            for widget in reddit.subreddit("test").widgets.sidebar:
                print(widget)

        Get ID card widget:

        .. code-block:: python

            print(reddit.subreddit("test").widgets.id_card)

        )r/   r‰   s    rj   ÚwidgetszSubreddit.widgetsó  s   € ô(   Ó%Ð%rl   c                ó   — t        | «      S )aÂ  Provide an instance of :class:`.SubredditWiki`.

        This attribute can be used to discover all wikipages for a subreddit:

        .. code-block:: python

            for wikipage in reddit.subreddit("test").wiki:
                print(wikipage)

        To fetch the content for a given wikipage try:

        .. code-block:: python

            wikipage = reddit.subreddit("test").wiki["proof"]
            print(wikipage.content_md)

        r-   r‰   s    rj   ÚwikizSubreddit.wiki	  s   € ô& ˜TÓ"Ð"rl   c                óH   — | j                   j                  j                  d   S )zThe class's kind.rr   )rg   ÚconfigÚkindsr‰   s    rj   Ú_kindzSubreddit._kind  s   € ð �|‰|×"Ñ"×(Ñ(¨Ñ5Ð5rl   c                ó¼   •— ||fj                  d«      dk7  rd}t        |«      ‚|r|| _        t        ‰| �  ||¬«       t
        d   j                  | ¬«      | _        y)a{  Initialize a :class:`.Subreddit` instance.

        :param reddit: An instance of :class:`.Reddit`.
        :param display_name: The name of the subreddit.

        .. note::

            This class should not be initialized directly. Instead, obtain an instance
            via:

            .. code-block:: python

                subreddit = reddit.subreddit("test")

        Né   z2Either 'display_name' or '_data' must be provided.©Ú_datarr   ©rr   )Úcountr|   r:   ÚsuperÚ__init__r   ÚformatÚ_path)rŠ   Úredditr:   r²   r�   Ú	__class__s        €rj   r¶   zSubreddit.__init__#  sc   ø€ ð* ˜%Ð ×&Ñ& tÓ,°Ò1ØFˆCÜ˜C“.Ð ÙØ ,ˆDÔÜ‰Ñ˜ uÐÔ-Ü˜kÑ*×1Ñ1¸DÐ1ÓAˆ�
rl   c                óZ   — |ddœ}| j                   j                  t        d   |¬«      d   S )zËConvert a Markdown string to a dict for use with the ``richtext_json`` param.

        :param markdown_text: A Markdown string to convert.

        :returns: A dict in ``richtext_json`` format.

        Úrtjson)Úmarkdown_textÚoutput_modeÚconvert_rte_bodyrc   Úoutput)rg   rf   r   )rŠ   r½   Ú	text_datas      rj   Ú_convert_to_fancypantsz Subreddit._convert_to_fancypants@  s3   € ð '4ÀHÑMˆ	Ø�|‰|× Ñ ¤Ð*<Ñ!=ÀIÐ ÓNÈxÑXÐXrl   c                óÐ   •— | j                  «       }|d   } t        | «      | j                  |¬«      }| j                  j	                  |j                  «       t
        ‰| �  «        y )Nrd   r±   )Ú_fetch_datara   rg   Ú__dict__re   rµ   Ú_fetch)rŠ   rd   Úotherrº   s      €rj   rÆ   zSubreddit._fetchK  sP   ø€ Ø×ÑÓ!ˆØ�F‰|ˆØ”�T“
˜4Ÿ<™<¨tÔ4ˆØ�‰×Ñ˜UŸ^™^Ô,Ü‰‰Õrl   c                ó   — dd| id fS )NÚsubreddit_aboutrr   © r‰   s    rj   Ú_fetch_infozSubreddit._fetch_infoR  s   € Ø  ;°Ð"5°tÐ;Ð;rl   c               ó2  — | j                   j                  t        d   |¬«      }|d   d   d   }d}|�|s	 t        j                  ||¬«      }|€y	 t        |j                  «       «      }|j                  «        |j                  d
«      dk(  rt        ‚|d   d   }	| j                   j                  |	¬«      S # t
        t        j                  t        f$ r d}t        |«      d‚w xY w# t
        t        j                  t        f$ r d	}t        |«      d‚w xY w)zªSubmit and return an ``image``, ``video``, or ``videogif``.

        This is a helper method for submitting posts that are not link posts or self
        posts.

        Úsubmitrc   Újsonrd   Úwebsocket_urlN)Útimeoutz(Error establishing websocket connection.zNWebsocket error. Check your media file. Your post may still have been created.ra   ÚfailedÚpayloadÚredirect©Úurl)rg   rf   r   Ú	websocketÚcreate_connectionÚOSErrorr   ÚBlockingIOErrorr   ÚrecvÚcloserz   r   Ú
submission)
rŠ   rd   rÐ   Úwithout_websocketsÚresponserÏ   Ú
connectionr�   Ú	ws_updaterÕ   s
             rj   Ú_submit_mediazSubreddit._submit_mediaU  s5  € ð —<‘<×$Ñ$¤X¨hÑ%7¸dÐ$ÓCˆØ  Ñ(¨Ñ0°ÑAˆØˆ
ØÐ$Ñ-?ð8Ü&×8Ñ8¸ÐPWÔX�
ð ÐØð	Ü˜jŸo™oÓ/Ó0ˆIØ×ÑÔð �=‰=˜Ó  HÒ,Ü!Ð!Ø˜	Ñ" :Ñ.ˆØ�|‰|×&Ñ&¨3Ð&Ó/Ð/øô+ Ü×,Ñ,Üðò 8ð
 A�Ü(¨Ó-°4Ð7ð8ûô œ×5Ñ5´ÐGò 	ØbˆCÜ$Øóàðð	ús   ·B9 Á)C) Â9-C&Ã)-Dc                ó€   — | j                  |«       |j                  j                  | j                  d¬«      |_        |S )zŸUpload media for use in self posts and return ``inline_media``.

        :param inline_media: An :class:`.InlineMedia` object to validate and upload.

        Úselfpost)Úupload_type)r…   rv   Ú_uploadrg   Úmedia_id)rŠ   r„   s     rj   Ú_upload_inline_mediazSubreddit._upload_inline_media|  s;   € ð 	×#Ñ# LÔ1Ø ,× 2Ñ 2× :Ñ :¸4¿<¹<ÐU_Ð :Ó `ˆÔØÐrl   c                óx   — | j                   j                  t        d   j                  t	        | «      ¬«      «      S )a±  Get the post requirements for a subreddit.

        :returns: A dict with the various requirements.

        The returned dict contains the following keys:

        - ``domain_blacklist``
        - ``body_restriction_policy``
        - ``domain_whitelist``
        - ``title_regexes``
        - ``body_blacklisted_strings``
        - ``body_required_strings``
        - ``title_text_min_length``
        - ``is_flair_required``
        - ``title_text_max_length``
        - ``body_regexes``
        - ``link_repost_age``
        - ``body_text_min_length``
        - ``link_restriction_policy``
        - ``body_text_max_length``
        - ``title_required_strings``
        - ``title_blacklisted_strings``
        - ``guidelines_text``
        - ``guidelines_display_policy``

        For example, to fetch the post requirements for r/test:

        .. code-block:: python

            print(reddit.subreddit("test").post_requirements)

        Úpost_requirementsr³   )rg   rz   r   r·   rp   r‰   s    rj   ré   zSubreddit.post_requirements†  s3   € ðB �|‰|×Ñ¤Ð)<Ñ =× DÑ DÌsÐSWËyÐ DÓ YÓZÐZrl   Ú	relevanceÚluceneÚall)ÚsortÚsyntaxÚtime_filterc          	     óî   — | j                  |«       | j                  j                  «       dk7  }| j                  |d|||||¬«       t        d   j                  | ¬«      }t        | j                  |fi |¤ŽS )ao  Return a :class:`.ListingGenerator` for items that match ``query``.

        :param query: The query string to search for.
        :param sort: Can be one of: ``"relevance"``, ``"hot"``, ``"top"``, ``"new"``, or
            ``"comments"``. (default: ``"relevance"``).
        :param syntax: Can be one of: ``"cloudsearch"``, ``"lucene"``, or ``"plain"``
            (default: ``"lucene"``).
        :param time_filter: Can be one of: ``"all"``, ``"day"``, ``"hour"``,
            ``"month"``, ``"week"``, or ``"year"`` (default: ``"all"``).

        For more information on building a search query see:
        https://www.reddit.com/r/reddit.com/wiki/search/

        For example, to search all subreddits for ``"praw"`` try:

        .. code-block:: python

            for submission in reddit.subreddit("all").search("praw"):
                print(submission.title)

        rì   Úparams)Ú	argumentsÚkeyÚqÚrestrict_srrí   rî   ÚtÚsearchr³   )Ú_validate_time_filterr:   ÚlowerÚ_safely_add_argumentsr   r·   r   rg   )rŠ   Úqueryrí   rî   rï   Úgenerator_kwargsÚnot_allrÕ   s           rj   r÷   zSubreddit.search©  s„   € ð< 	×"Ñ" ;Ô/Ø×#Ñ#×)Ñ)Ó+¨uÑ4ˆØ×"Ñ"Ø&ØØØØØØð 	#ô 	
ô �xÑ ×'Ñ'°$Ð'Ó7ˆÜ §¡¨cÑFÐ5EÑFÐFrl   r°   )Únumberc               óR  — t         d   j                  | ¬«      }|}	 | j                  j                  |d|i¬«       | j                  j                  j                  }|€J ‚| j                  | j                  t        ||«      ¬«      S # t        $ r}|j
                  }Y d}~Œed}~ww xY w)a‡  Return a :class:`.Submission` object for a sticky of the subreddit.

        :param number: Specify which sticky to return. 1 appears at the top (default:
            ``1``).

        :raises: ``prawcore.NotFound`` if the sticky does not exist.

        For example, to get the stickied post on r/test:

        .. code-block:: python

            reddit.subreddit("test").sticky()

        Úabout_stickyr³   Únum)rñ   NrÔ   )
r   r·   rg   rz   r   Úpathr¬   Ú
reddit_urlr;   r   )rŠ   rþ   rÕ   r  rÓ   r  s         rj   ÚstickyzSubreddit.stickyÕ  s    € ô �~Ñ&×-Ñ-¸Ð-Ó=ˆØˆð	!Ø�L‰L×Ñ˜S¨%°¨ÐÔ9ð —\‘\×(Ñ(×3Ñ3ˆ
ØÐ%Ð%Ð%Ø×%Ñ% d§l¡l¼À
ÈDÓ8QÐ%ÓRÐRøô	 ò 	!Ø—=‘=�Dûð	!ús   �B Â	B&ÂB!Â!B&.)
Úcollection_idÚdiscussion_typeÚdraft_idÚflair_idÚ
flair_textr„   ÚnsfwÚresubmitÚsend_repliesÚspoilerc                ó   — y ©NrÊ   )rŠ   r\   r  r  r  r  r	  r„   r
  r  Úselftextr  r  s                rj   rÍ   zSubreddit.submitî  ó   € ð   rl   )
r  r  r  r  r	  r
  r  r  r  r  c                ó   — y r  rÊ   )rŠ   r\   r  r  r  r  r	  r
  r  r  r  r  rÕ   s                rj   rÍ   zSubreddit.submit   r  rl   )r  r  r  r	  r
  r  r  r  r  rÐ   rÝ   c                ó   — y r  rÊ   )rŠ   r\   r  r  r  r	  r€   r
  r  r  r  r  rÐ   rÝ   s                 rj   rÍ   zSubreddit.submit  ó   € ð" $'rl   )r  r  r  r	  r
  r  r  r  c       	         ó   — y r  rÊ   )rŠ   r\   r  r  r  r	  Úgalleryr
  r  r  r  s              rj   rÍ   zSubreddit.submit%  s   € ð  rl   )	r  r  r  r	  r
  r  r  r  r  c       
         ó   — y r  rÊ   )rŠ   r\   r  r  r  r	  r
  Úpollr  r  r  r  s               rj   rÍ   zSubreddit.submit5  s   € ð  rl   c                ó   — y r  rÊ   )rŠ   r\   r  r  r  r	  r
  r  r  r  r  rÐ   ÚvideorÝ   s                 rj   rÍ   zSubreddit.submitF  r  rl   FTé
   )r  r  r  r  r	  r  r€   r„   r
  r  r  r  r  r  rÐ   rÕ   r  rÝ   c               ó^  — d|fd|fd|fd|fd|ffD ��cg c]	  \  }}|�|‘Œ }}}t        |«      dkD  r'dd	j                  d
„ |D «       «      › d�}t        |«      ‚|r|d   nd}|€t        |«      s|dk(  sd}t        |«      ‚|	r|�d|›d�}t        |«      ‚t        |
«      t        |«      t        |«      t	        | «      |ddœ}|j                  d|fd|fd|fd|ffD ��ci c]
  \  }}|�||“Œ c}}«       |��|D �cg c]  }t        |t        «      rd|in|‘Œ }}| j                  |«       |j                  dg d¬«       |�||d<   |D ]c  }|d   j                  |j                  dd«      t        d|d   «      j                  | j                  dd¬«      |j                  dd«      d œ«       Œe | j                  j                  |d!t        d"   ¬#«      d   }|d$   rt!        |d$   «      ‚| j                  j#                  |d%   d   ¬&«      S t        |«      |d'<   |�Ð|j%                  «       d(d)hz
  }|r0d*d	j                  d+„ t'        |«      D «       «      › d,�}t        |«      ‚d(d)h|j%                  «       z
  } | r0d-d	j                  d.„ t'        | «      D «       «      › d,�}t        |«      ‚|j                  |d(   |d)   |�|nd¬/«       | j                  j)                  t        d0   |¬1«      S |�I|�||d<   |j                  d|j                  | j                  d¬2«      ¬3«       | j+                  |||¬4«      S |��{t        |t        «      rd|i}|j%                  «       h d5£z
  }|r0d6d	j                  d7„ t'        |«      D «       «      › d,�}t        |«      ‚|j                  d«      }!t        |!t        «      sd8}t        |«      ‚t        d9|j                  d:«      «      }"|"€_t-        t.        «      j1                  «       j2                  j2                  j2                  j2                  d;z  d<z  }#t        t	        |#«      «      }"|�||d<   |j                  |j                  d=«      rd>nd|!j                  | j                  d¬2«      |"j                  | j                  «      ¬?«       | j+                  |||¬4«      S |�||d@<   |�|j                  dA|¬3«       |rž||d<   n˜|j                  dB¬C«       |	rr|€J ‚ |j4                  dHi |	j7                  «       D �$�%ci c]  \  }$}%|$| j9                  |%«      “Œ c}%}$¤Ž}&|j                  t;        | j=                  |&«      «      ¬D«       n|j                  |¬E«       | j                  j)                  t        dF   |¬G«      S c c}}w c c}}w c c}w c c}%}$w )Iaõ"  Add a submission to the :class:`.Subreddit`.

        :param title: The title of the submission.
        :param collection_id: The UUID of a :class:`.Collection` to add the
            newly-submitted post to.
        :param discussion_type: Set to ``"CHAT"`` to enable live discussion instead of
            traditional comments (default: ``None``).
        :param draft_id: The ID of a draft to submit. Only applies to text and link
            submissions.
        :param flair_id: The flair template to select (default: ``None``).
        :param flair_text: If the template's ``flair_text_editable`` value is ``True``,
            this value will set a custom text (default: ``None``). ``flair_id`` is
            required when ``flair_text`` is provided.
        :param gallery: A list of images to post as a gallery. Each item is either a
            :class:`.PostMedia` or a ``dict`` with the structure ``{"media":
            PostMedia("path"), "caption": "caption", "outbound_url": "url"}``, where
            only ``media`` is required.
        :param image: The :class:`.PostMedia` image to upload and post.
        :param inline_media: A dict of :class:`.InlineMedia` objects where the key is
            the placeholder name in ``selftext``. Only supported for text submissions.
        :param nsfw: Whether the submission should be marked NSFW (default: ``False``).
        :param poll: A ``dict`` with the structure ``{"duration": 3, "options": ["Yes",
            "No"]}``, where ``duration`` is the number of days the poll should accept
            votes (between ``1`` and ``7``, inclusive) and ``options`` is a list of two
            to six poll options as ``str``. Both keys are required.
        :param resubmit: When ``False``, an error will occur if the URL has already been
            submitted (default: ``True``).
        :param selftext: The Markdown formatted content for a ``text`` submission or
            optional Markdown-formatted body text for any other kind of submission. Use
            an empty string, ``""``, to make a title-only submission.
        :param send_replies: When ``True``, messages will be sent to the submission
            author when comments are made to the submission (default: ``True``).
        :param spoiler: Whether the submission should be marked as a spoiler (default:
            ``False``).
        :param timeout: Specifies a particular timeout, in seconds, for the WebSockets
            connection used by ``image`` and ``video`` submissions. Use to avoid
            "Websocket error" exceptions (default: ``10``).
        :param url: The URL for a ``link`` submission.
        :param video: The video to upload and post. Either a :class:`.PostMedia` or a
            ``dict`` with the structure ``{"media": PostMedia("path"), "gif": True,
            "thumbnail": PostMedia("path")}``, where only ``media`` is required. Set
            ``"gif"`` to ``True`` to submit the video as a videogif, which is
            essentially a silent video (default: ``False``). When ``"thumbnail"`` is not
            provided, the PRAW logo will be used as the thumbnail.
        :param without_websockets: Set to ``True`` to disable use of WebSockets for
            ``image`` and ``video`` submissions (see note below for an explanation). If
            ``True``, this method doesn't return anything (default: ``False``).

        :returns: A :class:`.Submission` object for the newly created submission, unless
            ``without_websockets`` is ``True`` for an ``image`` or ``video`` submission.

        :raises: :class:`.ClientException` if ``image`` or a ``gallery`` item's
            ``media`` refers to a file that is not an image, or if the ``video`` (or its
            ``media``) refers to a file that is not a video.

        At least one of ``gallery``, ``image``, ``poll``, ``selftext``, ``url``, or
        ``video`` must be provided. ``gallery``, ``image``, ``poll``, ``url``, and
        ``video`` are mutually exclusive, while ``selftext`` may accompany any of them
        as optional Markdown-formatted body text. ``selftext`` that accompanies another
        kind of submission does not support ``inline_media``.

        For example, to submit a URL to r/test do:

        .. code-block:: python

            title = "PRAW documentation"
            url = "https://praw.readthedocs.io"
            reddit.subreddit("test").submit(title, url=url)

        To submit an image to r/test do:

        .. code-block:: python

            from praw.models import PostMedia

            title = "My favorite picture"
            image = PostMedia("/path/to/image.png")
            reddit.subreddit("test").submit(title, image=image)

        To submit an image gallery to r/test do:

        .. code-block:: python

            from praw.models import PostMedia

            title = "My favorite pictures"
            gallery = [
                PostMedia("/path/to/image.png"),
                {
                    "media": PostMedia("/path/to/image2.png"),
                    "caption": "Image caption 2",
                },
                {
                    "media": PostMedia("/path/to/image3.png"),
                    "caption": "Image caption 3",
                    "outbound_url": "https://example.com/link3",
                },
            ]
            reddit.subreddit("test").submit(title, gallery=gallery)

        To submit a video to r/test do:

        .. code-block:: python

            from praw.models import PostMedia

            title = "My favorite movie"
            video = PostMedia("/path/to/video.mp4")
            reddit.subreddit("test").submit(title, video=video)

        To submit a videogif with a custom thumbnail instead, do:

        .. code-block:: python

            from praw.models import PostMedia

            title = "My favorite gif"
            video = {
                "gif": True,
                "media": PostMedia("/path/to/video.mp4"),
                "thumbnail": PostMedia("/path/to/thumbnail.png"),
            }
            reddit.subreddit("test").submit(title, video=video)

        To submit a poll to r/test do:

        .. code-block:: python

            title = "Do you like PRAW?"
            poll = {"duration": 3, "options": ["Yes", "No"]}
            reddit.subreddit("test").submit(title, poll=poll)

        To submit a self post with inline media do:

        .. code-block:: python

            from praw.models import InlineGif, InlineImage, InlineVideo, PostMedia

            gif = InlineGif(caption="optional caption", media=PostMedia("path/to/image.gif"))
            image = InlineImage(caption="optional caption", media=PostMedia("path/to/image.jpg"))
            video = InlineVideo(caption="optional caption", media=PostMedia("path/to/video.mp4"))
            selftext = "Text with a gif {gif1} an image {image1} and a video {video1} inline"
            media = {"gif1": gif, "image1": image, "video1": video}
            reddit.subreddit("test").submit("title", inline_media=media, selftext=selftext)

        .. note::

            Inserted media will have a padding of ``\\n\\n`` automatically added. This
            is due to the weirdness with Reddit's API. Using the example above, the
            result selftext body will look like so:

            .. code-block::

                Text with a gif

                ![gif](u1rchuphryq51 "optional caption")

                an image

                ![img](srnr8tshryq51 "optional caption")

                and video

                ![video](gmc7rvthryq51 "optional caption")

                inline

        .. note::

            For ``image`` and ``video`` submissions, Reddit's API uses WebSockets to
            respond with the link of the newly created post. If this fails, the method
            will raise :class:`.WebSocketException`. Occasionally, the Reddit post will
            still be created. More often, there is an error with the media file. If you
            frequently get exceptions but successfully created posts, try setting the
            ``timeout`` parameter to a value above 10.

            To disable the use of WebSockets, set ``without_websockets=True``. This will
            make the method return ``None``, though the post will still be created. You
            may wish to do this if you are running your program in a restricted network
            environment, or using a proxy that doesn't support WebSockets connections.

        .. note::

            To submit a post to a subreddit with the ``"news"`` flair, you can get the
            flair id like this:

            .. code-block::

                choices = list(subreddit.flair.link_templates.user_selectable())
                template_id = next(x for x in choices if x["flair_text"] == "news")["flair_template_id"]
                subreddit.submit("title", flair_id=template_id, url="https://www.news.com/")

        r  r€   r  rÕ   r  Nr°   zKOnly one of 'gallery', 'image', 'poll', 'url', or 'video' can be provided (z, c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr  ©Úrepr)Ú.0rL   s     rj   ú	<genexpr>z#Subreddit.submit.<locals>.<genexpr>=  s    è ø€ ò  jKÐy}ÔjnÐos×jtñ  jKùó   ‚z given).r   ry   z[At least one of 'gallery', 'image', 'poll', 'selftext', 'url', or 'video' must be provided.zl'inline_media' is only supported for text submissions. Only Markdown text can be used for the selftext of a z submission.T)r
  Úsendrepliesr  rV   r\   Úvalidate_on_submitr  r  r  r	  rv   rÎ   )Úapi_typeÚitemsÚshow_error_listÚtextr&  rx   r   )Úexpected_mime_prefixrä   Úoutbound_url)rx   ræ   r*  ÚPOSTÚsubmit_gallery_post)rÎ   Úmethodr  Úerrorsrd   rÔ   r  ÚdurationÚoptionsz'poll' contains invalid keys: c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr  r  ©r   ró   s     rj   r!  z#Subreddit.submit.<locals>.<genexpr>w  s   è ø€ Ò@kÈsÄÀcÇÑ@kùr"  ú.z!'poll' is missing required keys: c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr  r  r2  s     rj   r!  z#Subreddit.submit.<locals>.<genexpr>{  s   è ø€ ÒCnÐRUÄDÈÇIÑCnùr"  )r/  r0  r(  Úsubmit_poll_post)rÎ   )r)  )ÚkindrÕ   )rd   rÐ   rÝ   >   Úgifrv   Ú	thumbnailz'video' contains invalid keys: c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr  r  r2  s     rj   r!  z#Subreddit.submit.<locals>.<genexpr>�  s   è ø€ ÒAlÐPSÄ$ÀsÇ)ÑAlùr"  rw   zPostMedia | Noner8  r   zPRAW logo.pngr7  Úvideogif)r6  rÕ   Úvideo_poster_urlr  ÚlinkrŠ   )r6  )Úrichtext_json)r(  rÍ   rc   rÊ   )r}   ro   r|   Úboolrp   re   r{   r   r‚   Úappendrz   r	   rå   rg   Úrequestr   r   rÜ   ÚkeysÚsortedrf   rá   r   Ú__file__ÚabsoluteÚparentr·   r&  rç   r   rÂ   )'rŠ   r\   r  r  r  r  r	  r  r€   r„   r
  r  r  r  r  r  rÐ   rÕ   r  rÝ   rL   ÚvalueÚprovidedr�   r6  rd   ró   Úitemr   Ú
image_itemrÞ   Úinvalid_keysÚmissing_keysÚvideo_mediaÚthumbnail_mediaÚ	logo_pathÚplaceholderrv   Úbodys'                                          rj   rÍ   zSubreddit.submitY  s[  € ðv ˜GÐ$Ø˜%Ð Ø˜�Ø˜�Ø˜%Ð ð ÷

á��eð Ð ò ð

ˆñ 

ô ˆx‹=˜1ÒØ_Ð`d×`iÑ`iñ  jKð  BJô  jKó  aKð  `Lð  LTð  UˆCÜ˜C“.Ð Ù&ˆx˜Š{¨Dˆàˆ<¤ h¤°8¸r²>ØoˆCÜ˜C“.Ð Ù˜DÐ,ð Að  BFð  AIð  IUð  VˆCÜ˜C“.Ð ô ˜“JÜ Ó-Ü˜G“}Ü�d“)ØØ"&ñ
ˆð 	�‰ð ! -Ð0Ø" OÐ4Ø˜XÐ&Ø˜zÐ*ð	÷	
á��Uð Ð ð �‰Jó	
ô 		ð ÑàU\ö8ØMQ¤:¨d´IÔ#>�˜$‘ÀDÑHð8ˆFð 8ð ×"Ñ" 6Ô*Ø�K‰K ¨rÀ4ˆKÔHØÐ#Ø'��V‘Ø$ò 	�
Ø�W‘×$Ñ$Ø)Ÿ~™~¨i¸Ó<Ü $ [°*¸WÑ2EÓ F× NÑ NØŸ™Ø-4Ø$-ð !Oó !ð
 %/§N¡N°>À2Ó$Fñ&õ ð	ð —|‘|×+Ñ+°¸fÌ8ÐTiÑKjÐ+ÓkÐlrÑsˆHØ˜Ò!Ü(¨°(Ñ);Ó<Ð<Ø—<‘<×*Ñ*¨x¸Ñ/?ÀÑ/FÐ*ÓGÐGä ›>ˆˆZÑàÐØŸ9™9›;¨*°iÐ)@Ñ@ˆLÙØ6°t·y±yÑ@kÔV\Ð]iÓVjÔ@kÓ7kÐ6lÐlmÐn�Ü “nÐ$Ø&¨	Ð2°T·Y±Y³[Ñ@ˆLÙØ9¸$¿)¹)ÑCnÔY_Ð`lÓYmÔCnÓ:nÐ9oÐopÐq�Ü “nÐ$Ø�K‰KØ˜jÑ)Ø˜Y™Ø!)Ð!5‘X¸2ð ô ð
 —<‘<×$Ñ$¤XÐ.@Ñ%AÈÐ$ÓMÐMàÐØÐ#Ø'��V‘Ø�K‰K˜W¨%¯-©-¸¿¹Ð[b¨-Ó*cˆKÔdØ×%Ñ%¨4¸ÐUgÐ%ÓhÐhàÑÜ˜%¤Ô+Ø  %Ð(�Ø Ÿ:™:›<Ò*GÑGˆLÙØ7¸¿	¹	ÑAlÔW]Ð^jÓWkÔAlÓ8lÐ7mÐmnÐo�Ü “nÐ$ØŸ)™) GÓ,ˆKÜ˜k¬9Ô5ØM�Ü “nÐ$Ü"Ð#5°u·y±yÀÓ7MÓNˆOØÐ&ä ¤›N×3Ñ3Ó5×<Ñ<×CÑC×JÑJ×QÑQÐT\Ñ\Ð_nÑn�	Ü"+¬C°	«NÓ";�ØÐ#Ø'��V‘Ø�K‰KØ#(§9¡9¨UÔ#3‘Z¸Ø×'Ñ'¨¯©È7Ð'ÓSØ!0×!8Ñ!8¸¿¹Ó!Fð ô ð
 ×%Ñ%¨4¸ÐUgÐ%ÓhÐhàÐØ'ˆD�ÑØˆ?Ø�K‰K˜V¨ˆKÔ-áØ'��V’à�K‰K˜VˆKÔ$ÙØÐ+Ð+Ð+Ø&�x—‘ñ Ø\h×\nÑ\nÓ\p÷*ÙFXÀkÐSX�K ×!:Ñ!:¸5Ó!AÑAó*ñ �ð —‘¬%°×0KÑ0KÈDÓ0QÓ*R�ÕSà—‘ �Ô*à�|‰|× Ñ ¤¨(Ñ!3¸$Ð Ó?Ð?ùóI

ùó>	
ùò8ùód*s   •VÃ!V
Ã?V$ÔV))rq   c               óz   — dd| j                  || ¬«      dœ}| j                  j                  t        d   |¬«       y)a  Subscribe to the subreddit.

        :param other_subreddits: When provided, also subscribe to the provided list of
            subreddits.

        For example, to subscribe to r/test:

        .. code-block:: python

            reddit.subreddit("test").subscribe()

        ÚsubT©rq   rr   )ÚactionÚskip_inital_defaultsÚsr_nameÚ	subscriberc   N©rt   rg   rf   r   ©rŠ   rq   rd   s      rj   rW  zSubreddit.subscribe·  sD   € ð Ø$(Ø×+Ñ+Ð=MÐY]Ð+Ó^ñ
ˆð
 	�‰×Ñœ( ;Ñ/°dÐÕ;rl   c                óf   — | j                   j                  t        d   j                  | ¬«      «      S )a%  Return a dictionary of the :class:`.Subreddit`'s traffic statistics.

        :raises: ``prawcore.NotFound`` when the traffic stats aren't available to the
            authenticated user, that is, they are not public and the authenticated user
            is not a moderator of the subreddit.

        The traffic method returns a dict with three keys. The keys are ``day``,
        ``hour`` and ``month``. Each key contains a list of lists with 3 or 4 values.
        The first value is a timestamp indicating the start of the category (start of
        the day for the ``day`` key, start of the hour for the ``hour`` key, etc.). The
        second, third, and fourth values indicate the unique pageviews, total pageviews,
        and subscribers, respectively.

        .. note::

            The ``hour`` key does not contain subscribers, and therefore each sub-list
            contains three values.

        For example, to get the traffic stats for r/test:

        .. code-block:: python

            stats = reddit.subreddit("test").traffic()

        Úabout_trafficr³   )rg   rz   r   r·   r‰   s    rj   ÚtrafficzSubreddit.trafficË  s,   € ð4 �|‰|×Ñ¤¨Ñ 9× @Ñ @È4Ð @Ó PÓQÐQrl   c               óx   — d| j                  || ¬«      dœ}| j                  j                  t        d   |¬«       y)a  Unsubscribe from the subreddit.

        :param other_subreddits: When provided, also unsubscribe from the provided list
            of subreddits.

        To unsubscribe from r/test:

        .. code-block:: python

            reddit.subreddit("test").unsubscribe()

        ÚunsubrS  )rT  rV  rW  rc   NrX  rY  s      rj   ÚunsubscribezSubreddit.unsubscribeç  sA   € ð Ø×+Ñ+Ð=MÐY]Ð+Ó^ñ
ˆð 	�‰×Ñœ( ;Ñ/°dÐÕ;rl   )Hrg   úpraw.Redditr?   úbool | Noner@   ra  rA   ra  rB   ra  rC   ú
int | NonerD   ú
str | NonerE   rc  rF   ra  rG   rc  rH   ra  rI   rc  rJ   rc  rK   rc  rL   rc  rM   ra  rN   rc  rO   ra  rP   ra  rQ   ra  rR   ra  rS   ra  rT   ra  rU   ra  rV   rc  rW   rc  rX   rc  rY   rc  rZ   rc  r[   rc  r\   rc  r]   rb  r^   rb  r_   rc  rh   r   ÚreturnÚNone)rq   z'Sequence[str | models.Subreddit] | Nonerr   zmodels.Subredditrd  rp   )r   z list[dict[str, str | PostMedia]]rd  re  )r„   úmodels.InlineMediard  re  )rd  r(   )rd  r5   )rd  r&   )rd  r   )rd  r   )rd  r   )rd  r!   )rd  r'   )rd  r#   )rd  r%   )rd  r   )rd  r*   )rd  r,   )rd  zmodels.SubredditWidgets)rd  r.   )rd  rp   )NN)r¹   r`  r:   rc  r²   zdict[str, Any] | Nonerd  re  )r½   rp   rd  Údict)rd  re  )rd  z'tuple[str, dict[str, RedditBase], None])rd   zdict[Any, Any]rÐ   r=   rÝ   r>  rd  úmodels.Submission | None)r„   rf  rd  rf  )rd  zdict[str, str | int | bool])rû   rp   rí   rp   rî   rp   rï   rp   rü   r   rd  zIterator[models.Submission])rþ   r=   rd  úmodels.Submission)r\   rp   r  rc  r  rc  r  rc  r  rc  r	  rc  r„   ú$dict[str, models.InlineMedia] | Noner
  r>  r  r>  r  rp   r  r>  r  r>  rd  ri  )r\   rp   r  rc  r  rc  r  rc  r  rc  r	  rc  r
  r>  r  r>  r  rc  r  r>  r  r>  rÕ   rp   rd  ri  )r\   rp   r  rc  r  rc  r  rc  r	  rc  r€   zmodels.PostMediar
  r>  r  r>  r  rc  r  r>  r  r>  rÐ   r=   rÝ   r>  rd  rh  )r\   rp   r  rc  r  rc  r  rc  r	  rc  r  z:list[models.PostMedia | dict[str, str | models.PostMedia]]r
  r>  r  rc  r  r>  r  r>  rd  ri  )r\   rp   r  rc  r  rc  r  rc  r	  rc  r
  r>  r  zdict[str, int | list[str]]r  r>  r  rc  r  r>  r  r>  rd  ri  )r\   rp   r  rc  r  rc  r  rc  r	  rc  r
  r>  r  r>  r  rc  r  r>  r  r>  rÐ   r=   r  z5models.PostMedia | dict[str, bool | models.PostMedia]rÝ   r>  rd  rh  )(r\   rp   r  rc  r  rc  r  rc  r  rc  r	  rc  r  zAlist[models.PostMedia | dict[str, str | models.PostMedia]] | Noner€   zmodels.PostMedia | Noner„   rj  r
  r>  r  z!dict[str, int | list[str]] | Noner  r>  r  rc  r  r>  r  r>  rÐ   r=   rÕ   rc  r  z<models.PostMedia | dict[str, bool | models.PostMedia] | NonerÝ   r>  rd  rh  )rq   zlist[models.Subreddit] | Nonerd  re  )rd  zdict[str, list[list[int]]])/Ú__name__Ú
__module__Ú__qualname__Ú__doc__r~   ÚMESSAGE_PREFIXÚ	STR_FIELDÚ__annotations__Ústaticmethodrk   rt   r‚   r…   r1   r‡   rŒ   rŽ   r�   r“   r•   r—   r™   r›   r�   rŸ   r¢   r¤   r¦   r¨   rª   Úpropertyr®   r¶   rÂ   rÆ   rË   rá   rç   ré   r÷   r  r
   rÍ   rW  r\  r_  Ú__classcell__)rº   s   @rj   r7   r7   .   sF
  ø… ñEðN ÐØ€NØ€Ið /Ó.Ø"<Ó<àÓàð %)Ø-1Ø!%Ø15Ø.2Ø"&Ø!Ø/3Ø(,Ø $Ø $ØØ $ØØ#Ø)-Ø&*Ø"&Ø*.Ø%)Ø"&Ø&*Ø(,ØØ(,Ø"&Ø(,Ø%)Ø-1Ø Ø$(Ø&*Ø#ñGL9àðL9ð "ðL9ð  +ð	L9ð
 ðL9ð $/ðL9ð ",ðL9ð  ðL9ð ðL9ð "-ðL9ð &ðL9ð ðL9ð ðL9ð ðL9ð ðL9ð  ð!L9ð" ð#L9ð$ 'ð%L9ð& $ð'L9ð(  ð)L9ð* (ð+L9ð, #ð-L9ð.  ð/L9ð0 $ð1L9ð2 &ð3L9ð4 ð5L9ð6 &ð7L9ð8  ð9L9ð: &ð;L9ð< #ð=L9ð> !+ð?L9ð@ ðAL9ðB "ðCL9ðD $ðEL9ðF ðGL9ðH ðIL9ðJ 
òKL9ó ðL9ð\ ðàAðð $ðð 
ò	ó ðð ò%ó ð%ð ò!ó ð!ð
 ò5ó ð5ð& òEó ðEð0 ò<ó ð<ð ò$ó ð$ð0 ò
&ó ð
&ð ò$ó ð$ð, ò
)ó ð
)ð ò8ó ð8ð& òó ðð ò4ó ð4ð ò)ó ð)ð  ò$ó ð$ð0 ò%ó ð%ð, ò)ó ð)ð  ò&ó ð&ð* ò#ó ð#ð( ò6ó ð6ð $(Ø'+ð	BàðBð !ðBð %ð	Bð
 
õBó:	Yõó<ð%0Ø%ð%0Ø03ð%0ØIMð%0à	!ó%0óNó![ðN  ØØ ñ*Gàð*Gð ð	*Gð
 ð*Gð ð*Gð  ð*Gð 
%ó*GðX '(õ Sð2 ð
 %(Ø&)Ø"Ø"Ø!$Ø=@ØØà Øñ àð ð "ð	 ð
 $ð ð ð ð ð ð ð ð ;ð ð ð ð ð ð ð ð ð ð ð ð 
ò ó ð ð" ð
 %(Ø&)Ø"Ø"Ø!$ØØØ"Ø Øñ àð ð "ð	 ð
 $ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ò ó ð ð" ð
 %(Ø&)Ø"Ø!$àØØ"Ø ØØØ#&ñ'àð'ð "ð	'ð
 $ð'ð ð'ð ð'ð  ð'ð ð'ð ð'ð ð'ð ð'ð ð'ð ð'ð !ð'ð  
"ò!'ó ð'ð$ ð
 %(Ø&)Ø"Ø!$àØ"Ø Øñ àð ð "ð	 ð
 $ð ð ð ð ð ð Lð ð ð ð ð ð ð ð ð ð 
ò ó ð ð ð
 %(Ø&)Ø"Ø!$ØàØ"Ø Øñ àð ð "ð	 ð
 $ð ð ð ð ð ð ð ð )ð ð ð ð ð ð ð ð ð ð 
ò ó ð ð  ð
 %(Ø&)Ø"Ø!$ØØØ"Ø ØØà#&ñ'àð'ð "ð	'ð
 $ð'ð ð'ð ð'ð ð'ð ð'ð ð'ð ð'ð ð'ð ð'ð Eð'ð !ð'ð  
"ò!'ó ð'ð, %)Ø&*Ø#Ø#Ø!%ØUYØ)-Ø=AØØ26ØØ#Ø!ØØØØNRØ#(ñ+\@àð\@ð "ð	\@ð
 $ð\@ð ð\@ð ð\@ð ð\@ð Sð\@ð 'ð\@ð ;ð\@ð ð\@ð 0ð\@ð ð\@ð ð\@ð  ð!\@ð" ð#\@ð$ ð%\@ð& ð'\@ð( Lð)\@ð* !ð+\@ð, 
"ó-\@ð|
 NRõ <ó(Rð8 PT÷ <ñ <rl   r7   )Jrn  Ú
__future__r   rÎ   r   r   Úpathlibr   Útypingr   r   r	   r
   Úurllib.parser   rÖ   Úprawcorer   Ú
praw.constr   Úpraw.exceptionsr   r   r   Úpraw.models.listing.generatorr   Úpraw.models.listing.mixinsr   Úpraw.models.mediar   Úpraw.models.reddit.baser   Úpraw.models.reddit.emojir   Úpraw.models.reddit.mixinsr   r   r   Úpraw.models.reddit.rulesr   Ú$praw.models.reddit.subreddit.filtersr   Ú"praw.models.reddit.subreddit.flairr   Ú'praw.models.reddit.subreddit.moderationr!   Ú$praw.models.reddit.subreddit.modmailr#   Ú'praw.models.reddit.subreddit.quarantiner%   Ú)praw.models.reddit.subreddit.relationshipr&   r'   r(   Ú#praw.models.reddit.subreddit.streamr*   Ú'praw.models.reddit.subreddit.stylesheetr,   Ú!praw.models.reddit.subreddit.wikir.   Úpraw.models.reddit.widgetsr/   r0   Ú	praw.utilr1   Úcollections.abcr2   r3   Úprawr4   Úpraw.models.reddit.collectionsr5   r7   Ú_subreddit_classrÊ   rl   rj   ú<module>r’     sŸ   ðÙ "å "ç Ý ß 5Ó 5Ý  ã Ý å ß SÑ SÝ :Ý <Ý 'Ý .Ý 3ß SÑ SÝ 3Ý AÝ =Ý GÝ 8Ý G÷ñ õ
 @Ý GÝ ;ß FÝ $áß2ãÝÝCôJ<Ð Ð"7¸ÈÐV`ô J<ðZ& "+€Õ rl   