8000 Add iter_all_{repos,users} · n1k0/github3.py@90ce44a · GitHub
[go: up one dir, main page]

Skip to content

Commit 90ce44a

Browse files
committed
Add iter_all_{repos,users}
Reference: 996f8fdd2da0fa9f669d26700c5a9ec7cf2cd271
1 parent fe66189 commit 90ce44a

File tree

4 files changed

+73
-0
lines changed

4 files changed

+73
-0
lines changed

docs/api.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ Or you can simply use the following functions
6161

6262
------
6363

64+
.. autofunction:: github3.iter_all_repos
65+
66+
------
67+
68+
.. autofunction:: github3.iter_all_users
69+
70+
------
71+
6472
.. autofunction:: github3.iter_events
6573

6674
------

github3/api.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,26 @@ def gitignore_templates():
7373
return gh.gitignore_templates()
7474

7575

76+
def iter_all_repos(number=-1):
77+
"""Iterate over every repository in the order they were created.
78+
79+
:param int number: (optional), number of repositories to return.
80+
Default: -1, returns all of them
81+
:returns: generator of :class:`Repository <github3.repos.Repository>`
82+
"""
83+
return gh.iter_all_repos(number)
84+
85+
86+
def iter_all_users(number=-1):
87+
"""Iterate over every user in the order they signed up for GitHub.
88+
89+
:param int number: (optional), number of users to return. Default: -1,
90+
returns all of them
91+
:returns: generator of :class:`User <github3.users.User>`
92+
"""
93+
return gh.iter_all_users(number)
94+
95+
7696
def iter_events(number=-1):
7797
"""Iterate over public events.
7898

github3/github.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,26 @@ def issue(self, owner, repository, number):
329329
return repo.issue(number)
330330
return None
331331

332+
def iter_all_repos(self, number=-1):
333+
"""Iterate over every repository in the order they were created.
334+
335+
:param int number: (optional), number of repositories to return.
336+
Default: -1, returns all of them
337+
:returns: generator of :class:`Repository <github3.repos.Repository>`
338+
"""
339+
url = self._build_url('repositories')
340+
return self._iter(int(number), url, Repository)
341+
342+
def iter_all_users(self, number=-1):
343+
"""Iterate over every user in the order they signed up for GitHub.
344+
345+
:param int number: (optional), number of users to return. Default: -1,
346+
returns all of them
347+
:returns: generator of :class:`User <github3.users.User>`
348+
"""
349+
url = self._build_url('users')
350+
return self._iter(int(number), url, User)
351+
332352
@requires_basic_auth
333353
def iter_authorizations(self, number=-1):
334354
"""Iterate over authorizations for the authenticated user. This will

tests/test_repos.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,28 @@ def test_create_blob(self):
9393
expect(self.repo.create_blob(None, None)) == ''
9494
expect(self.repo.create_blob(content, encoding)) == sha
9595
self.mock_assertions()
96+
97+
def test_create_comment(self):
98+
self.request.return_value = generate_response('commit_comment', 201)
99+
body = ('Late night commits are never a good idea. I refactored a '
100+
'bit. `User` objects and `Organization` objects share a lot '
101+
'of common attributes. I turned those common attributes into '
102+
'one `BaseAccount` class to make things simpler. ')
103+
sha = 'd41566090114a752eb3a87dbcf2473eb427ef0f3'
104+
self.args = ('post', self.api + 'commits/{0}/comments'.format(sha))
105+
self.conf = {
106+
'data': {
107+
'body': body, 'commit_id': sha, 'line': 1, 'path': '',
108+
'position': 1
109+
}
110+
}
111+
112+
with expect.githuberror():
113+
self.repo.create_comment(body, sha)
114+
115+
self.login()
116+
expect(self.repo.create_comment(None, None)).is_None()
117+
expect(self.repo.create_comment(body, sha, line=0)).is_None()
118+
expect(self.repo.create_comment(body, sha)
119+
).isinstance(github3.repos.RepoComment)
120+
self.mock_assertions()

0 commit comments

Comments
 (0)
0