diff --git a/src/asyncpraw-stubs/models/listing/mixins/__init__.pyi b/src/asyncpraw-stubs/models/listing/mixins/__init__.pyi index 7921837..243dcee 100644 --- a/src/asyncpraw-stubs/models/listing/mixins/__init__.pyi +++ b/src/asyncpraw-stubs/models/listing/mixins/__init__.pyi @@ -1,6 +1,15 @@ """Package providing models that pertain to listing mixins.""" -from .base import BaseListingMixin -from .rising import RisingListingMixin +from asyncpraw.models.listing.mixins.base import BaseListingMixin +from asyncpraw.models.listing.mixins.redditor import RedditorListingMixin +from asyncpraw.models.listing.mixins.rising import RisingListingMixin +from asyncpraw.models.listing.mixins.submission import SubmissionListingMixin +from asyncpraw.models.listing.mixins.subreddit import SubredditListingMixin -__all__ = ["BaseListingMixin", "RisingListingMixin"] +__all__ = [ + "BaseListingMixin", + "RedditorListingMixin", + "RisingListingMixin", + "SubmissionListingMixin", + "SubredditListingMixin", +] diff --git a/src/asyncpraw-stubs/models/listing/mixins/base.pyi b/src/asyncpraw-stubs/models/listing/mixins/base.pyi index 77f97fa..c6fc89f 100644 --- a/src/asyncpraw-stubs/models/listing/mixins/base.pyi +++ b/src/asyncpraw-stubs/models/listing/mixins/base.pyi @@ -2,6 +2,30 @@ from __future__ import annotations +from typing import Any, AsyncIterator, ClassVar + from asyncpraw.models.base import AsyncPRAWBase +from asyncpraw.util import _deprecate_args + +class BaseListingMixin(AsyncPRAWBase): + VALID_TIME_FILTERS: ClassVar[set[str]] -class BaseListingMixin(AsyncPRAWBase): ... + @staticmethod + def _validate_time_filter(time_filter: str) -> None: ... + def _prepare(self, *, arguments: dict[str, Any], sort: str) -> str: ... + @_deprecate_args("time_filter") + def controversial( + self, + *, + time_filter: str = "all", + **generator_kwargs: str | int | dict[str, str], + ) -> AsyncIterator[Any]: ... + def hot(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[Any]: ... + def new(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[Any]: ... + @_deprecate_args("time_filter") + def top( + self, + *, + time_filter: str = "all", + **generator_kwargs: str | int | dict[str, str], + ) -> AsyncIterator[Any]: ... diff --git a/src/asyncpraw-stubs/models/listing/mixins/gilded.pyi b/src/asyncpraw-stubs/models/listing/mixins/gilded.pyi new file mode 100644 index 0000000..546762a --- /dev/null +++ b/src/asyncpraw-stubs/models/listing/mixins/gilded.pyi @@ -0,0 +1,10 @@ +"""Provide the GildedListingMixin class.""" + +from __future__ import annotations + +from typing import Any, AsyncIterator + +from asyncpraw.models.base import AsyncPRAWBase + +class GildedListingMixin(AsyncPRAWBase): + def gilded(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[Any]: ... diff --git a/src/asyncpraw-stubs/models/listing/mixins/redditor.pyi b/src/asyncpraw-stubs/models/listing/mixins/redditor.pyi new file mode 100644 index 0000000..c995cd7 --- /dev/null +++ b/src/asyncpraw-stubs/models/listing/mixins/redditor.pyi @@ -0,0 +1,26 @@ +"""Provide the RedditorListingMixin class.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, AsyncIterator + +from asyncpraw.models.listing.mixins.base import BaseListingMixin +from asyncpraw.models.listing.mixins.gilded import GildedListingMixin +from asyncpraw.util import cachedproperty + +if TYPE_CHECKING: + import asyncpraw.models + +class SubListing(BaseListingMixin): + def __init__(self, reddit: asyncpraw.Reddit, base_path: str, subpath: str) -> None: ... + +class RedditorListingMixin(BaseListingMixin, GildedListingMixin): + @cachedproperty + def comments(self) -> SubListing: ... + @cachedproperty + def submissions(self) -> SubListing: ... + def downvoted(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Comment | asyncpraw.models.Submission]: ... + def gildings(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Comment | asyncpraw.models.Submission]: ... + def hidden(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Comment | asyncpraw.models.Submission]: ... + def saved(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Comment | asyncpraw.models.Submission]: ... + def upvoted(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Comment | asyncpraw.models.Submission]: ... diff --git a/src/asyncpraw-stubs/models/listing/mixins/rising.pyi b/src/asyncpraw-stubs/models/listing/mixins/rising.pyi index 076eca4..0493b5c 100644 --- a/src/asyncpraw-stubs/models/listing/mixins/rising.pyi +++ b/src/asyncpraw-stubs/models/listing/mixins/rising.pyi @@ -2,6 +2,13 @@ from __future__ import annotations +from typing import TYPE_CHECKING, AsyncIterator + from asyncpraw.models.base import AsyncPRAWBase -class RisingListingMixin(AsyncPRAWBase): ... +if TYPE_CHECKING: + import asyncpraw.models + +class RisingListingMixin(AsyncPRAWBase): + def random_rising(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Submission]: ... + def rising(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Submission]: ... diff --git a/src/asyncpraw-stubs/models/listing/mixins/submission.pyi b/src/asyncpraw-stubs/models/listing/mixins/submission.pyi new file mode 100644 index 0000000..cd1eaa6 --- /dev/null +++ b/src/asyncpraw-stubs/models/listing/mixins/submission.pyi @@ -0,0 +1,13 @@ +"""Provide the SubmissionListingMixin class.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, AsyncIterator + +from asyncpraw.models.base import AsyncPRAWBase + +if TYPE_CHECKING: + import asyncpraw.models + +class SubmissionListingMixin(AsyncPRAWBase): + def duplicates(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Submission]: ... diff --git a/src/asyncpraw-stubs/models/listing/mixins/subreddit.pyi b/src/asyncpraw-stubs/models/listing/mixins/subreddit.pyi new file mode 100644 index 0000000..2e61d90 --- /dev/null +++ b/src/asyncpraw-stubs/models/listing/mixins/subreddit.pyi @@ -0,0 +1,25 @@ +"""Provide the SubredditListingMixin class.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, AsyncIterator + +from asyncpraw.models.base import AsyncPRAWBase +from asyncpraw.models.listing.mixins.base import BaseListingMixin +from asyncpraw.models.listing.mixins.gilded import GildedListingMixin +from asyncpraw.models.listing.mixins.rising import RisingListingMixin +from asyncpraw.util import cachedproperty + +if TYPE_CHECKING: # pragma: no cover + import asyncpraw.models + +class CommentHelper(AsyncPRAWBase): + @property + def _path(self) -> str: ... + def __call__(self, **generator_kwargs: str | int | dict[str, str]) -> AsyncIterator[asyncpraw.models.Comment]: ... + def __init__(self, subreddit: asyncpraw.models.Subreddit | SubredditListingMixin) -> None: ... + +class SubredditListingMixin(BaseListingMixin, GildedListingMixin, RisingListingMixin): + @cachedproperty + def comments(self) -> CommentHelper: ... + def __init__(self, reddit: asyncpraw.Reddit, _data: dict[str, Any] | None) -> None: ...