
    {i                    j    S r SSKJr  SSK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\5      rg)z#Provide the BaseListingMixin class.    )annotations)AnyIterator)urljoin   )_deprecate_args   )PRAWBase   )ListingGeneratorc                      \ rS rSrSr1 Skr\SS j5       rSS jr\	" S5      SS.     SS	 jj5       r
SS
 jrSS jr\	" S5      SS.     SS jj5       rSrg)BaseListingMixin   z>Adds minimum set of methods that apply to all listing objects.>   alldayhourweekyearmonthtime_filterc                    U [         R                  ;  aC  SR                  [        SR                  [         R                  5      5      nSU 3n[        U5      eg)z]Validate ``time_filter``.

:raises: :py:class:`ValueError` if ``time_filter`` is not valid.

z, z{!r}z'time_filter' must be one of: N)r   VALID_TIME_FILTERSjoinmapformat
ValueError)r   valid_time_filtersmsgs      Y/home/james-whalen/.local/lib/python3.13/site-packages/praw/models/listing/mixins/base.py_validate_time_filter&BaseListingMixin._validate_time_filter   sW     .AAA!%FMM#3#F#FG" 33E2FGCS/! B    c                   U R                   R                  S5      (       a  U R                  USUS9  U R                  $ [	        U R                  U5      $ )zNFix for :class:`.Redditor` methods that use a query param rather than subpath._listing_use_sortparams)	argumentskeysort)__dict__get_safely_add_arguments_pathr   )selfr&   r(   s      r   _prepareBaseListingMixin._prepare    sH    ==011&&t&T::tzz4((r"   r   )r   c                   U R                  U5        U R                  USUS9  U R                  USS9n[        U R                  U40 UD6$ )aZ  Return a :class:`.ListingGenerator` for controversial items.

:param time_filter: Can be one of: ``"all"``, ``"day"``, ``"hour"``,
    ``"month"``, ``"week"``, or ``"year"`` (default: ``"all"``).

:raises: :py:class:`ValueError` if ``time_filter`` is invalid.

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

This method can be used like:

.. code-block:: python

    reddit.domain("imgur.com").controversial(time_filter="week")
    reddit.multireddit(redditor="samuraisam", name="programming").controversial(
        time_filter="day"
    )
    reddit.redditor("spez").controversial(time_filter="month")
    reddit.redditor("spez").comments.controversial(time_filter="year")
    reddit.redditor("spez").submissions.controversial(time_filter="all")
    reddit.subreddit("all").controversial(time_filter="hour")

r%   r&   r'   tcontroversialr&   r(   r    r+   r.   r   _redditr-   r   generator_kwargsurls       r   r3   BaseListingMixin.controversial'   sX    > 	"";/""&H 	# 	
 mm&6_mMcF5EFFr"   c                t    UR                  S0 5        U R                  USS9n[        U R                  U40 UD6$ )a  Return a :class:`.ListingGenerator` for hot items.

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

This method can be used like:

.. code-block:: python

    reddit.domain("imgur.com").hot()
    reddit.multireddit(redditor="samuraisam", name="programming").hot()
    reddit.redditor("spez").hot()
    reddit.redditor("spez").comments.hot()
    reddit.redditor("spez").submissions.hot()
    reddit.subreddit("all").hot()

r%   hotr4   
setdefaultr.   r   r6   r-   r8   r9   s      r   r<   BaseListingMixin.hotM   >    $ 	##Hb1mm&6UmCcF5EFFr"   c                t    UR                  S0 5        U R                  USS9n[        U R                  U40 UD6$ )a  Return a :class:`.ListingGenerator` for new items.

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

This method can be used like:

.. code-block:: python

    reddit.domain("imgur.com").new()
    reddit.multireddit(redditor="samuraisam", name="programming").new()
    reddit.redditor("spez").new()
    reddit.redditor("spez").comments.new()
    reddit.redditor("spez").submissions.new()
    reddit.subreddit("all").new()

r%   newr4   r=   r?   s      r   rC   BaseListingMixin.newc   rA   r"   c                   U R                  U5        U R                  USUS9  U R                  USS9n[        U R                  U40 UD6$ )a  Return a :class:`.ListingGenerator` for top items.

:param time_filter: Can be one of: ``"all"``, ``"day"``, ``"hour"``,
    ``"month"``, ``"week"``, or ``"year"`` (default: ``"all"``).

:raises: :py:class:`ValueError` if ``time_filter`` is invalid.

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

This method can be used like:

.. code-block:: python

    reddit.domain("imgur.com").top(time_filter="week")
    reddit.multireddit(redditor="samuraisam", name="programming").top(time_filter="day")
    reddit.redditor("spez").top(time_filter="month")
    reddit.redditor("spez").comments.top(time_filter="year")
    reddit.redditor("spez").submissions.top(time_filter="all")
    reddit.subreddit("all").top(time_filter="hour")

r%   r1   topr4   r5   r7   s       r   rF   BaseListingMixin.topy   sX    : 	"";/""&H 	# 	
 mm&6UmCcF5EFFr"    N)r   str)r&   zdict[str, Any]r(   rI   returnrI   )r   rI   r8   str | int | dict[str, str]rJ   Iterator[Any])r8   rK   rJ   rL   )__name__
__module____qualname____firstlineno____doc__r   staticmethodr    r.   r   r3   r<   rC   rF   __static_attributes__rH   r"   r   r   r      s    HH" ") ]# !#G #G 7	#G
 
#G $#GJG,G, ]# !!G !G 7	!G
 
!G $!Gr"   r   N)rQ   
__future__r   typingr   r   urllib.parser   utilr   baser
   	generatorr   r   rH   r"   r   <module>rZ      s*    ) "     $  (NGx NGr"   