Skip to content

Commit f896a8a

Browse files
committed
Fix up archive behaviour
Remove chitauri-preview header and use SHA. This was found while re-recording cassettes and wasn't easy to factor out into its own PR. While fixing the tests, I also found we had tests that were magically passing earlier (regarding Repository.{source,parent}) so that's fixed now.
1 parent eb57e7e commit f896a8a

File tree

172 files changed

+398
-271
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

172 files changed

+398
-271
lines changed

github3/events.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,9 @@ def _follow(payload, session):
168168

169169

170170
def _forkev(payload, session):
171-
from .repos import Repository
171+
from .repos import ShortRepository
172172
if payload.get('forkee'):
173-
payload['forkee'] = Repository(payload['forkee'], session)
173+
payload['forkee'] = ShortRepository(payload['forkee'], session)
174174
return payload
175175

176176

@@ -233,11 +233,11 @@ def _release(payload, session):
233233

234234
def _team(payload, session):
235235
from .orgs import Team
236-
from .repos import Repository
236+
from .repos import ShortRepository
237237
if payload.get('team'):
238238
payload['team'] = Team(payload['team'], session)
239239
if payload.get('repo'):
240-
payload['repo'] = Repository(payload['repo'], session)
240+
payload['repo'] = ShortRepository(payload['repo'], session)
241241
if payload.get('sender'):
242242
payload['sender'] = EventUser(payload['sender'], session)
243243
return payload

github3/orgs.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from .decorators import requires_auth
1313
from .events import Event
1414
from .projects import Project
15-
from .repos import Repository
15+
from .repos import Repository, ShortRepository
1616

1717

1818
class Team(models.GitHubCore):
@@ -184,7 +184,7 @@ def repositories(self, number=-1, etag=None):
184184
"""
185185
headers = {'Accept': 'application/vnd.github.ironman-preview+json'}
186186
url = self._build_url('repos', base_url=self._api)
187-
return self._iter(int(number), url, Repository, etag=etag,
187+
return self._iter(int(number), url, ShortRepository, etag=etag,
188188
headers=headers)
189189

190190
@requires_auth
@@ -599,7 +599,7 @@ def repositories(self, type='', number=-1, etag=None):
599599
params = {}
600600
if type in ('all', 'public', 'member', 'private', 'forks', 'sources'):
601601
params['type'] = type
602-
return self._iter(int(number), url, Repository, params, etag)
602+
return self._iter(int(number), url, ShortRepository, params, etag)
603603

604604
@requires_auth
605605
def teams(self, number=-1, etag=None):

github3/repos/branch.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def latest_sha(self, differs_from=''):
5151
"""
5252
# If-None-Match returns 200 instead of 304 value does not have quotes
5353
headers = {
54-
'Accept': 'application/vnd.github.chitauri-preview+sha',
54+
'Accept': 'application/vnd.github.v3.sha',
5555
'If-None-Match': '"{0}"'.format(differs_from)
5656
}
5757
base = self._api.split('/branches', 1)[0]
@@ -73,10 +73,12 @@ def protect(self, enforcement=None, status_checks=None):
7373
status checks that must pass before merging. Use `None` or omit to
7474
use the already associated value.
7575
"""
76-
previous_values = self.protection['required_status_checks']
77-
if enforcement is None:
76+
previous_values = None
77+
if self.protection:
78+
previous_values = self.protection['required_status_checks']
79+
if enforcement is None and previous_values:
7880
enforcement = previous_values['enforcement_level']
79-
if status_checks is None:
81+
if status_checks is None and previous_values:
8082
status_checks = previous_values['contexts']
8183

8284
edit = {'protection': {'enabled': True, 'required_status_checks': {

github3/repos/repo.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ def add_collaborator(self, username):
128128
return False
129129
url = self._build_url('collaborators', str(username),
130130
base_url=self._api)
131-
return self._boolean(self._put(url), 204, 404)
131+
return self._boolean(self._put(url), 201, 404)
132132

133133
def archive(self, format, path='', ref='master'):
134134
"""Get the tarball or zipball archive for this repo at ref.
@@ -1032,13 +1032,13 @@ def forks(self, sort='', number=-1, etag=None):
10321032
returns all forks
10331033
:param str etag: (optional), ETag from a previous request to the same
10341034
endpoint
1035-
:returns: generator of :class:`Repository <Repository>`
1035+
:returns: generator of :class:`~github3.repos.repo.ShortRepository`
10361036
"""
10371037
url = self._build_url('forks', base_url=self._api)
10381038
params = {}
10391039
if sort in ('newest', 'oldest', 'watchers'):
10401040
params = {'sort': sort}
1041-
return self._iter(int(number), url, Repository, params, etag)
1041+
return self._iter(int(number), url, ShortRepository, params, etag)
10421042

10431043
def git_commit(self, sha):
10441044
"""Get a single (git) commit.
@@ -1175,7 +1175,7 @@ def import_issue(self, title, body, created_at, assignee=None,
11751175
data = self._post(url, data=issue,
11761176
headers=ImportedIssue.IMPORT_CUSTOM_HEADERS)
11771177

1178-
json = self._json(data, 200)
1178+
json = self._json(data, 202)
11791179
return self._instance_or_null(ImportedIssue, json)
11801180

11811181
def is_assignee(self, username):
@@ -2186,6 +2186,12 @@ class Repository(_Repository):
21862186
21872187
The number of issues currently open on the repository.
21882188
2189+
.. attribute:: parent
2190+
2191+
A representation of the parent repository as
2192+
:class:`~github3.repos.repo.ShortRepository`. If this Repository has
2193+
no parent then this will be ``None``.
2194+
21892195
.. attribute:: pushed_at
21902196
21912197
A parsed :class:`~datetime.datetime` object representing the date a
@@ -2195,6 +2201,12 @@ class Repository(_Repository):
21952201
21962202
The size of the repository.
21972203
2204+
.. attribute:: source
2205+
2206+
A representation of the source repository as
2207+
:class:`~github3.repos.repo.ShortRepository`. If this Repository has
2208+
no source then this will be ``None``.
2209+
21982210
.. attribute:: ssh_url
21992211
22002212
This is the URL that can be used to clone the repository via the SSH
@@ -2251,8 +2263,14 @@ def _update_attributes(self, repo):
22512263
self.mirror_url = repo['mirror_url']
22522264
self.network_count = repo['network_count']
22532265
self.open_issues_count = repo['open_issues_count']
2266+
self.parent = repo.get('parent', None)
2267+
if self.parent is not None:
2268+
self.parent = ShortRepository(self.parent, self)
22542269
self.pushed_at = self._strptime(repo['pushed_at'])
22552270
self.size = repo['size']
2271+
self.source = repo.get('source', None)
2272+
if self.source is not None:
2273+
self.source = ShortRepository(self.source, self)
22562274
self.ssh_url = repo['ssh_url']
22572275
self.stargazers_count = repo['stargazers_count']
22582276
self.subscribers_count = repo['subscribers_count']
@@ -2286,7 +2304,7 @@ class StarredRepository(GitHubCore):
22862304

22872305
def _update_attributes(self, starred_repository):
22882306
self.starred_at = self._strptime(starred_repository['starred_at'])
2289-
self.repository = Repository(starred_repository['repo'], self)
2307+
self.repository = ShortRepository(starred_repository['repo'], self)
22902308
self.repo = self.repository
22912309

22922310
def _repr(self):

github3/users.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -372,9 +372,9 @@ def subscriptions(self, number=-1, etag=None):
372372
endpoint
373373
:returns: generator of :class:`Repository <github3.repos.Repository>`
374374
"""
375-
from .repos import Repository
375+
from .repos import ShortRepository
376376
url = self._build_url('subscriptions', base_url=self._api)
377-
return self._iter(int(number), url, Repository, etag=etag)
377+
return self._iter(int(number), url, ShortRepository, etag=etag)
378378

379379
@requires_auth
380380
def rename(self, login):

0 commit comments

Comments
 (0)