
    {i$                        S r SSKJr  SSKJrJrJr  SSKJr  SSK	J
r
  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  \(       a  SSKr " S S\5      rg)zProvide the Subreddits class.    )annotations)TYPE_CHECKINGAnyIterator)warn   )API_PATH)_deprecate_args   )	Subreddit)PRAWBase)ListingGenerator)stream_generatorNc                     \ rS rSrSr\SS j5       r    SS jrSS jr    SS jr	    SS jr
    SS jr S     SS
 jjr      SS jr\" SSS5      SSS.       SS jj5       rSS jr    SS jrSrg	)
Subreddits   zDSubreddits is a Listing class that provides various subreddit lists.c                b    SR                  U  Vs/ s H  n[        U5      PM     sn5      $ s  snf )N,)joinstr)subreddit_listxs     P/home/james-whalen/.local/lib/python3.13/site-packages/praw/models/subreddits.py_to_listSubreddits._to_list   s'    xx8AQ8998s   ,c                >    [        U R                  [        S   40 UD6$ )zReturn a :class:`.ListingGenerator` for default subreddits.

Additional keyword arguments are passed in the initialization of
:class:`.ListingGenerator`.

subreddits_defaultr   _redditr	   selfgenerator_kwargss     r   defaultSubreddits.default   (      LL(#78
<L
 	
    c                D    [        S[        SS9  U R                  " S0 UD6$ )z?Alias for :meth:`.premium` to maintain backwards compatibility.z9'subreddits.gold' has be renamed to 'subreddits.premium'.r   )category
stacklevel )r   DeprecationWarningpremiumr    s     r   goldSubreddits.gold'   s(    G'	

 ||/.//r&   c                >    [        U R                  [        S   40 UD6$ )zReturn a :class:`.ListingGenerator` for new subreddits.

Additional keyword arguments are passed in the initialization of
:class:`.ListingGenerator`.

subreddits_newr   r    s     r   newSubreddits.new0   s(      LL(#34
8H
 	
r&   c                >    [        U R                  [        S   40 UD6$ )zReturn a :class:`.ListingGenerator` for popular subreddits.

Additional keyword arguments are passed in the initialization of
:class:`.ListingGenerator`.

subreddits_popularr   r    s     r   popularSubreddits.popular=   r%   r&   c                >    [        U R                  [        S   40 UD6$ )zReturn a :class:`.ListingGenerator` for premium subreddits.

Additional keyword arguments are passed in the initialization of
:class:`.ListingGenerator`.

subreddits_goldr   r    s     r   r,   Subreddits.premiumJ   s(      LL(#45
9I
 	
r&   Nc                   [        U[        5      (       d  Sn[        U5      eUb"  [        U[        5      (       d  Sn[        U5      eSU R                  U=(       d    / 5      0n[        S   R                  U R                  U5      S9nU R                  R                  XTS9 Vs/ s H  n[        U R                  US   5      PM     sn$ s  snf )a9  Return subreddits recommended for the given list of subreddits.

:param subreddits: A list of :class:`.Subreddit` instances and/or subreddit
    names.
:param omit_subreddits: A list of :class:`.Subreddit` instances and/or subreddit
    names to exclude from the results (Reddit's end may not work as expected).

zsubreddits must be a listz&omit_subreddits must be a list or Noneomitsub_recommended)
subredditsparamssr_name)	
isinstancelist	TypeErrorr   r	   formatr   getr   )r!   r=   omit_subredditsmsgr?   urlsubs          r   recommendedSubreddits.recommendedW   s     *d++-CC. &z/4/P/P:CC. $--(=2>?()00DMM*<U0V ||''';
; dllC	N3;
 	
 
s   $#C
queryc                `    U R                  USUS9  [        U R                  [        S   40 UD6$ )ad  Return a :class:`.ListingGenerator` of subreddits matching ``query``.

Subreddits are searched by both their title and description.

:param query: The query string to filter subreddits by.

Additional keyword arguments are passed in the initialization of
:class:`.ListingGenerator`.

.. seealso::

    :meth:`.search_by_name` to search by subreddit names

r?   )	argumentskeyqsubreddits_search)_safely_add_argumentsr   r   r	   )r!   rL   r"   s      r   searchSubreddits.searchr   s>    " 	""-=8u"ULL(#67
;K
 	
r&   include_nsfwexactTF)rU   rV   c                   U R                   R                  [        S   X#US.S9nUS    Vs/ s H  oPR                   R                  U5      PM     sn$ s  snf )a  Return list of :class:`.Subreddit`\ s whose names begin with ``query``.

:param query: Search for subreddits beginning with this string.
:param exact: Return only exact matches to ``query`` (default: ``False``).
:param include_nsfw: Include subreddits labeled NSFW (default: ``True``).

subreddits_name_search)include_over_18rV   rL   )datanames)r   postr	   	subreddit)r!   rL   rU   rV   resultr   s         r   search_by_nameSubreddits.search_by_name   sY     ""-.%1ER # 
 4:'?C?a&&q)?CCCs   $Ac                    U R                   R                  [        S   SU0S9nU Vs/ s H8  o3R                  S5      (       d  M  U R                   R                  US   5      PM:     sn$ s  snf )zReturn list of Subreddits whose topics match ``query``.

:param query: Search for subreddits relevant to the search topic.

.. note::

    As of 09/01/2020, this endpoint always returns 404.

subreddits_by_topicrL   r>   name)r   rE   r	   r]   )r!   rL   r^   r   s       r   search_by_topicSubreddits.search_by_topic   sf     !!*+We4D " 
 <BS6aUU6]1&&qy16SSSs   A*"A*c                .    [        U R                  40 UD6$ )zYield new subreddits as they are created.

Subreddits are yielded oldest first. Up to 100 historical subreddits will
initially be returned.

Keyword arguments are passed to :func:`.stream_generator`.

)r   r1   )r!   stream_optionss     r   streamSubreddits.stream   s      ;N;;r&   r*   )r   !list[str | praw.models.Subreddit]returnr   )r"   str | int | dict[str, str]rk   Iterator[praw.models.Subreddit])r"   r   rk   rm   )N)r=   rj   rF   z(list[str | praw.models.Subreddit] | Nonerk   list[praw.models.Subreddit])rL   r   r"   rl   rk   rm   )rL   r   rU   boolrV   ro   rk   rn   )rL   r   rk   rn   )rg   rl   rk   rm   )__name__
__module____qualname____firstlineno____doc__staticmethodr   r#   r-   r1   r5   r,   rJ   rS   r
   r_   rd   rh   __static_attributes__r*   r&   r   r   r      s"   N: :
"<
	(
0
"<
	(

"<
	(

"<
	(
  EI
5
 B
 
%	
6

.H
	(
, Wng6
 "DD 	D
 D 
%D 7D(T< :<	(<r&   r   )rt   
__future__r   typingr   r   r   warningsr   constr	   utilr
    r   baser   listing.generatorr   r   praw.modelsprawr   r*   r&   r   <module>r      s:    # " / /   "   / "d< d<r&   