Skip to content

Commit

Permalink
Sort praw.models.helpers.MultiredditHelper.__call__ arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
LilSpazJoekp committed Jan 14, 2022
1 parent fa5abf4 commit c34bb09
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 31 deletions.
5 changes: 3 additions & 2 deletions praw/models/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,14 +238,15 @@ def now(self) -> Optional["praw.models.LiveThread"]:
class MultiredditHelper(PRAWBase):
"""Provide a set of functions to interact with multireddits."""

@_deprecate_args("redditor", "name")
def __call__(
self, redditor: Union[str, "praw.models.Redditor"], name: str
self, *, name: str, redditor: Union[str, "praw.models.Redditor"]
) -> "praw.models.Multireddit":
"""Return a lazy instance of :class:`.Multireddit`.
:param name: The name of the multireddit.
:param redditor: A redditor name or :class:`.Redditor` instance who owns the
multireddit.
:param name: The name of the multireddit.
"""
path = f"/user/{redditor}/m/{name}"
Expand Down
10 changes: 6 additions & 4 deletions praw/models/listing/mixins/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ def controversial(
.. code-block:: python
reddit.domain("imgur.com").controversial(time_filter="week")
reddit.multireddit("samuraisam", "programming").controversial(time_filter="day")
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")
Expand All @@ -76,7 +78,7 @@ def hot(self, **generator_kwargs: Union[str, int, Dict[str, str]]) -> Iterator[A
.. code-block:: python
reddit.domain("imgur.com").hot()
reddit.multireddit("samuraisam", "programming").hot()
reddit.multireddit(redditor="samuraisam", name="programming").hot()
reddit.redditor("spez").hot()
reddit.redditor("spez").comments.hot()
reddit.redditor("spez").submissions.hot()
Expand All @@ -98,7 +100,7 @@ def new(self, **generator_kwargs: Union[str, int, Dict[str, str]]) -> Iterator[A
.. code-block:: python
reddit.domain("imgur.com").new()
reddit.multireddit("samuraisam", "programming").new()
reddit.multireddit(redditor="samuraisam", name="programming").new()
reddit.redditor("spez").new()
reddit.redditor("spez").comments.new()
reddit.redditor("spez").submissions.new()
Expand Down Expand Up @@ -131,7 +133,7 @@ def top(
.. code-block:: python
reddit.domain("imgur.com").top(time_filter="week")
reddit.multireddit("samuraisam", "programming").top(time_filter="day")
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")
Expand Down
16 changes: 9 additions & 7 deletions praw/models/reddit/multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,17 @@ def stream(self) -> SubredditStream:
.. code-block:: python
for comment in reddit.multireddit("spez", "fun").stream.comments():
for comment in reddit.multireddit(redditor="spez", name="fun").stream.comments():
print(comment)
Additionally, new submissions can be retrieved via the stream. In the following
example all new submissions to the multireddit are fetched:
.. code-block:: python
for submission in reddit.multireddit("bboe", "games").stream.submissions():
for submission in reddit.multireddit(
redditor="bboe", name="games"
).stream.submissions():
print(submission)
"""
Expand Down Expand Up @@ -126,7 +128,7 @@ def add(self, subreddit: "praw.models.Subreddit"):
.. code-block:: python
subreddit = reddit.subreddit("test")
reddit.multireddit("bboe", "test").add(subreddit)
reddit.multireddit(redditor="bboe", name="test").add(subreddit)
"""
url = API_PATH["multireddit_update"].format(
Expand All @@ -146,7 +148,7 @@ def copy(self, display_name: Optional[str] = None) -> "praw.models.Multireddit":
.. code-block:: python
reddit.multireddit("bboe", "test").copy("testing")
reddit.multireddit(redditor="bboe", name="test").copy("testing")
"""
if display_name:
Expand All @@ -170,7 +172,7 @@ def delete(self):
.. code-block:: python
reddit.multireddit("bboe", "test").delete()
reddit.multireddit(redditor="bboe", name="test").delete()
"""
path = API_PATH["multireddit_api"].format(
Expand All @@ -188,7 +190,7 @@ def remove(self, subreddit: "praw.models.Subreddit"):
.. code-block:: python
subreddit = reddit.subreddit("test")
reddit.multireddit("bboe", "test").remove(subreddit)
reddit.multireddit(redditor="bboe", name="test").remove(subreddit)
"""
url = API_PATH["multireddit_update"].format(
Expand Down Expand Up @@ -227,7 +229,7 @@ def update(
.. code-block:: python
reddit.multireddit("bboe", "test").update(display_name="testing")
reddit.multireddit(redditor="bboe", name="test").update(display_name="testing")
"""
if "subreddits" in updated_settings:
Expand Down
4 changes: 2 additions & 2 deletions praw/reddit.py
Original file line number Diff line number Diff line change
Expand Up @@ -341,11 +341,11 @@ def request(self, *args, **kwargs):
"""An instance of :class:`.MultiredditHelper`.
Provides the interface to working with :class:`.Multireddit` instances. For
example you can obtain a :class:`.Multireddit` instance via:
example, you can obtain a :class:`.Multireddit` instance via:
.. code-block:: python
reddit.multireddit("samuraisam", "programming")
reddit.multireddit(redditor="samuraisam", name="programming")
"""

Expand Down
30 changes: 15 additions & 15 deletions tests/integration/models/reddit/test_multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def test_add(self, _):
@mock.patch("time.sleep", return_value=None)
def test_copy(self, _):
self.reddit.read_only = False
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
new = multi.copy()
assert new.name == multi.name
Expand All @@ -29,7 +29,7 @@ def test_copy(self, _):
@mock.patch("time.sleep", return_value=None)
def test_copy__with_display_name(self, _):
self.reddit.read_only = False
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
name = "A--B\n" * 10
with self.use_cassette():
new = multi.copy(display_name=name)
Expand Down Expand Up @@ -63,7 +63,7 @@ def test_remove(self, _):
assert "redditdev" not in multi.subreddits

def test_subreddits(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
assert multi.subreddits
assert all(isinstance(x, Subreddit) for x in multi.subreddits)
Expand All @@ -83,31 +83,31 @@ def test_update(self, _):

class TestMultiredditListings(IntegrationTest):
def test_comments(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
comments = list(multi.comments())
assert len(comments) == 100

def test_controversial(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
submissions = list(multi.controversial())
assert len(submissions) == 100

def test_gilded(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
submissions = list(multi.gilded())
assert len(submissions) == 100

def test_hot(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
submissions = list(multi.hot())
assert len(submissions) == 100

def test_new(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
submissions = list(multi.new())
assert len(submissions) == 100
Expand All @@ -121,19 +121,19 @@ def test_new__self_multi(self, _):
assert len(submissions) == 100

def test_random_rising(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
submissions = list(multi.random_rising())
assert len(submissions) > 0

def test_rising(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
submissions = list(multi.rising())
assert len(submissions) > 0

def test_top(self):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
submissions = list(multi.top())
assert len(submissions) == 100
Expand All @@ -142,15 +142,15 @@ def test_top(self):
class TestMultiredditStreams(IntegrationTest):
@mock.patch("time.sleep", return_value=None)
def test_comments(self, _):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
generator = multi.stream.comments()
for i in range(110):
assert isinstance(next(generator), Comment)

@mock.patch("time.sleep", return_value=None)
def test_comments__with_pause(self, _):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
comment_stream = multi.stream.comments(pause_after=0)
comment_count = 1
Expand All @@ -167,15 +167,15 @@ def test_comments__with_pause(self, _):

@mock.patch("time.sleep", return_value=None)
def test_submissions(self, _):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette():
generator = multi.stream.submissions()
for i in range(102):
assert isinstance(next(generator), Submission)

@mock.patch("time.sleep", return_value=None)
def test_submissions__with_pause(self, _):
multi = self.reddit.multireddit("kjoneslol", "sfwpornnetwork")
multi = self.reddit.multireddit(redditor="kjoneslol", name="sfwpornnetwork")
with self.use_cassette("TestMultiredditStreams.test_submissions"):
generator = multi.stream.submissions(pause_after=-1)
submission = next(generator)
Expand Down
5 changes: 4 additions & 1 deletion tests/unit/test_reddit.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,10 @@ def test_live_info__invalid_param(self):
assert str(excinfo.value) == "ids must be a list"

def test_multireddit(self):
assert self.reddit.multireddit("bboe", "aa").path == "/user/bboe/m/aa"
assert (
self.reddit.multireddit(redditor="bboe", name="aa").path
== "/user/bboe/m/aa"
)

@mock.patch(
"praw.Reddit.request",
Expand Down

0 comments on commit c34bb09

Please sign in to comment.