From 4ce1a90038b23d931858ad22815dbe29f74d7d98 Mon Sep 17 00:00:00 2001 From: Nat Williams Date: Fri, 13 Apr 2012 17:06:09 -0500 Subject: add Git Data API support --- pygithub3/github.py | 9 ++ pygithub3/requests/git_data/__init__.py | 0 pygithub3/requests/git_data/blobs.py | 20 ++++ pygithub3/requests/git_data/commits.py | 20 ++++ pygithub3/requests/git_data/references.py | 33 ++++++ pygithub3/requests/git_data/tags.py | 16 +++ pygithub3/requests/git_data/trees.py | 20 ++++ pygithub3/resources/git_data.py | 27 +++++ pygithub3/services/git_data/__init__.py | 20 ++++ pygithub3/services/git_data/blobs.py | 24 +++++ pygithub3/services/git_data/commits.py | 29 ++++++ pygithub3/services/git_data/references.py | 67 ++++++++++++ pygithub3/services/git_data/tags.py | 34 +++++++ pygithub3/services/git_data/trees.py | 34 +++++++ pygithub3/tests/services/test_git_data.py | 164 ++++++++++++++++++++++++++++++ 15 files changed, 517 insertions(+) create mode 100644 pygithub3/requests/git_data/__init__.py create mode 100644 pygithub3/requests/git_data/blobs.py create mode 100644 pygithub3/requests/git_data/commits.py create mode 100644 pygithub3/requests/git_data/references.py create mode 100644 pygithub3/requests/git_data/tags.py create mode 100644 pygithub3/requests/git_data/trees.py create mode 100644 pygithub3/resources/git_data.py create mode 100644 pygithub3/services/git_data/__init__.py create mode 100644 pygithub3/services/git_data/blobs.py create mode 100644 pygithub3/services/git_data/commits.py create mode 100644 pygithub3/services/git_data/references.py create mode 100644 pygithub3/services/git_data/tags.py create mode 100644 pygithub3/services/git_data/trees.py create mode 100644 pygithub3/tests/services/test_git_data.py (limited to 'pygithub3') diff --git a/pygithub3/github.py b/pygithub3/github.py index 0b302a1..13829a0 100644 --- a/pygithub3/github.py +++ b/pygithub3/github.py @@ -17,9 +17,11 @@ class Github(object): from pygithub3.services.users import User from pygithub3.services.repos import Repo from pygithub3.services.gists import Gist + from pygithub3.services.git_data import GitData self._users = User(**config) self._repos = Repo(**config) self._gists = Gist(**config) + self._git_data = GitData(**config) @property def remaining_requests(self): @@ -47,3 +49,10 @@ class Github(object): :ref:`Gists service ` """ return self._gists + + @property + def git_data(self): + """ + :ref:`Git Data service ` + """ + return self._git_data diff --git a/pygithub3/requests/git_data/__init__.py b/pygithub3/requests/git_data/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pygithub3/requests/git_data/blobs.py b/pygithub3/requests/git_data/blobs.py new file mode 100644 index 0000000..4a49c6b --- /dev/null +++ b/pygithub3/requests/git_data/blobs.py @@ -0,0 +1,20 @@ +# -*- encoding: utf-8 -*- + +from pygithub3.requests.base import Request +from pygithub3.resources.git_data import Blob + + +class Get(Request): + + uri = 'repos/{user}/{repo}/git/blobs/{sha}' + resource = Blob + + +class Create(Request): + + uri = 'repos/{user}/{repo}/git/blobs' + resource = Blob + body_schema = { + 'schema': ('content', 'encoding'), + 'required': ('content', 'encoding'), #TODO: is enc really required? + } diff --git a/pygithub3/requests/git_data/commits.py b/pygithub3/requests/git_data/commits.py new file mode 100644 index 0000000..936d3c7 --- /dev/null +++ b/pygithub3/requests/git_data/commits.py @@ -0,0 +1,20 @@ +# -*- encoding: utf-8 -*- + +from pygithub3.requests.base import Request +from pygithub3.resources.git_data import Commit + + +class Get(Request): + uri = 'repos/{user}/{repo}/git/commits/{sha}' + resource = Commit + + +class Create(Request): + uri = 'repos/{user}/{repo}/git/commits' + resource = Commit + body_schema = { + 'schema': ('message', 'tree', 'parents', 'author', 'committer'), + 'required': ('message', 'tree', 'parents'), + } + + diff --git a/pygithub3/requests/git_data/references.py b/pygithub3/requests/git_data/references.py new file mode 100644 index 0000000..99cf41a --- /dev/null +++ b/pygithub3/requests/git_data/references.py @@ -0,0 +1,33 @@ +from pygithub3.requests.base import Request +from pygithub3.resources.git_data import Reference + + +class Get(Request): + uri = 'repos/{user}/{repo}/git/refs/{ref}' + resource = Reference + + +class List(Request): + uri = 'repos/{user}/{repo}/git/refs' + resource = Reference + + +class Create(Request): + uri = 'repos/{user}/{repo}/git/refs' + resource = Reference + body_schema = { + 'schema': ('ref', 'sha'), + 'required': ('ref', 'sha'), + } + +class Update(Request): + uri = 'repos/{user}/{repo}/git/refs/{ref}' + resource = Reference + body_schema = { + 'schema': ('sha', 'force'), + 'required': ('sha',), + } + + +class Delete(Request): + uri = 'repos/{user}/{repo}/git/refs/{ref}' diff --git a/pygithub3/requests/git_data/tags.py b/pygithub3/requests/git_data/tags.py new file mode 100644 index 0000000..8b37f0e --- /dev/null +++ b/pygithub3/requests/git_data/tags.py @@ -0,0 +1,16 @@ +from pygithub3.requests.base import Request +from pygithub3.resources.git_data import Tag + + +class Get(Request): + uri = 'repos/{user}/{repo}/git/tags/{sha}' + resource = Tag + +class Create(Request): + uri = 'repos/{user}/{repo}/git/tags' + resource = Tag + body_schema = { + 'schema': ('tag', 'message', 'object', 'type', 'tagger'), + 'required': ('type',), + } + diff --git a/pygithub3/requests/git_data/trees.py b/pygithub3/requests/git_data/trees.py new file mode 100644 index 0000000..bd1593f --- /dev/null +++ b/pygithub3/requests/git_data/trees.py @@ -0,0 +1,20 @@ +from pygithub3.requests.base import Request +from pygithub3.resources.git_data import Tree + + +class Get(Request): + uri = 'repos/{user}/{repo}/git/trees/{sha}' + resource = Tree + + def clean_uri(self): + if self.recursive: + return self.uri + '?recursive=1' + + +class Create(Request): + uri = 'repos/{user}/{repo}/git/trees' + resource = Tree + body_schema = { + 'schema': ('tree',), + 'required': ('tree',), + } diff --git a/pygithub3/resources/git_data.py b/pygithub3/resources/git_data.py new file mode 100644 index 0000000..4adcf5d --- /dev/null +++ b/pygithub3/resources/git_data.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from .base import Resource +from .repos import Author, Commit + + +class Blob(Resource): + def __str__(self): + return "" % getattr(self, 'content', '') + + +class Reference(Resource): + def __str__(self): + return '' % getattr(self, 'ref', '') + + +class Tag(Resource): + _maps = {'object': Commit, + 'tagger': Author,} # committer? tagger? + def __str__(self): + return '' % getattr(self, 'tag', '') + + +class Tree(Resource): + def __str__(self): + return '' % getattr(self, 'sha', '') diff --git a/pygithub3/services/git_data/__init__.py b/pygithub3/services/git_data/__init__.py new file mode 100644 index 0000000..a12ddea --- /dev/null +++ b/pygithub3/services/git_data/__init__.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from pygithub3.services.base import Service +from .blobs import Blobs +from .commits import Commits +from .references import References +from .tags import Tags +from .trees import Trees + +def GitData(Service): + """Consume `Git Data API `_""" + + def __init__(self, **config): + self.blobs = Blobs(**config) + self.commits = Commits(**config) + self.references = References(**config) + self.tags = Tags(**config) + self.trees = Trees(**config) + super(GitData, self).__init__(**config) diff --git a/pygithub3/services/git_data/blobs.py b/pygithub3/services/git_data/blobs.py new file mode 100644 index 0000000..d5baa2d --- /dev/null +++ b/pygithub3/services/git_data/blobs.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from pygithub3.services.base import Service + + +class Blobs(Service): + """Consume `Blobs API `_""" + + def get(self, sha, user=None, repo=None): + """Get a particular blob + + :param str sha: The sha of the blob to get + + """ + request = self.make_request('git_data.blobs.get', sha=sha, + user=user, repo=repo) + return self._get(request) + + def create(self, data, user=None, repo=None): + """Create a blob""" + request = self.make_request('git_data.blobs.create', body=data, + user=user, repo=repo) + return self._post(request) diff --git a/pygithub3/services/git_data/commits.py b/pygithub3/services/git_data/commits.py new file mode 100644 index 0000000..cdca300 --- /dev/null +++ b/pygithub3/services/git_data/commits.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from pygithub3.services.base import Service + + +class Commits(Service): + """Consume `Commits API `_""" + + def get(self, sha, user=None, repo=None): + """get a commit from the current repo""" + request = self.make_request('git_data.commits.get', sha=sha, + user=user, repo=repo) + return self._get(request) + + def create(self, data, user=None, repo=None): + """create a commit on a repo + + :param dict data: Input. See `github commits doc`_ + :param str user: username + :param str repo: repository name + + """ + return self._post( + self.make_request('git_data.commits.create', user=user, repo=repo, + body=data) + ) + + diff --git a/pygithub3/services/git_data/references.py b/pygithub3/services/git_data/references.py new file mode 100644 index 0000000..8ae0865 --- /dev/null +++ b/pygithub3/services/git_data/references.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from pygithub3.services.base import Service + + +class References(Service): + """Consume `References API `_""" + + def get(self, ref, user=None, repo=None): + """Get a reference. + + .. note:: + Remember that branch references look like "heads/" + + """ + return self._get( + self.make_request('git_data.references.get', ref=ref, user=user, + repo=repo) + ) + + def list(self, namespace='', user=None, repo=None): + """List all the references + + :param str namespace: Limit the request to a particular type of + reference. For example, ``heads`` or ``tags``. + + """ + return self._get( + self.make_request('git_data.references.list', user=user, repo=repo) + ) + + def create(self, body, user=None, repo=None): + """Create a reference + + :param dict body: Data describing the reference to create + :param str user: username + :param str repo: repository name + + """ + return self._post( + self.make_request('git_data.references.create', body=body, + user=user, repo=repo) + ) + + def update(self, ref, body, user=None, repo=None): + """Update an existing reference + + :param str ref: The SHA of the reference to update + :param dict body: data + + """ + return self._patch( + self.make_request('git_data.references.update', ref=ref, body=body, + user=user, repo=repo) + ) + + def delete(self, ref, user=None, repo=None): + """Delete a reference + + :param str ref: The SHA of the reference to delete + + """ + return self._delete( + self.make_request('git_data.references.delete', ref=ref, user=user, + repo=repo) + ) diff --git a/pygithub3/services/git_data/tags.py b/pygithub3/services/git_data/tags.py new file mode 100644 index 0000000..03d38ac --- /dev/null +++ b/pygithub3/services/git_data/tags.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from pygithub3.services.base import Service + + +class Tags(Service): + """Consume `Tags API `_""" + + def get(self, sha, user=None, repo=None): + """Get a tag + + :param str sha: The sha of the tag to get. + :param str user: Username + :param str repo: Repository + + """ + return self._get( + self.make_request('git_data.tags.get', sha=sha, user=user, + repo=repo) + ) + + def create(self, body, user=None, repo=None): + """Create a tag + + :param dict body: Data describing the tag to create + :param str user: Username + :param str repo: Repository + + """ + return self._post( + self.make_request('git_data.tags.create', body=body, user=user, + repo=repo) + ) diff --git a/pygithub3/services/git_data/trees.py b/pygithub3/services/git_data/trees.py new file mode 100644 index 0000000..00e010b --- /dev/null +++ b/pygithub3/services/git_data/trees.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from pygithub3.services.base import Service + + +class Trees(Service): + """Consume `Trees API `_""" + + def get(self, sha, recursive=False, user=None, repo=None): + """Get a tree object + + :param str sha: The SHA of the tree you want. + :param bool recursive: Whether to resolve each sub-tree belonging to + this tree + :param str user: Username + :param str repo: Repository + + """ + return self._get( + self.make_request('git_data.trees.get', sha=sha, + recursive=recursive, user=user, repo=repo) + ) + + def create(self, body, user=None, repo=None): + """Create a tree object + + :param dict body: Data describing the tree to create + + """ + return self._post( + self.make_request('git_data.trees.create', body=body, user=user, + repo=repo) + ) diff --git a/pygithub3/tests/services/test_git_data.py b/pygithub3/tests/services/test_git_data.py new file mode 100644 index 0000000..45ef6d1 --- /dev/null +++ b/pygithub3/tests/services/test_git_data.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import requests +from mock import patch, Mock + +from pygithub3.tests.utils.core import TestCase +from pygithub3.services.git_data import (Blobs, Commits, References, Tags, + Trees) +from pygithub3.resources.base import json +from pygithub3.tests.utils.base import (mock_response, mock_response_result, + mock_json) +from pygithub3.tests.utils.services import _ + + +json.dumps = Mock(side_effect=mock_json) +json.loads = Mock(side_effect=mock_json) + + +@patch.object(requests.sessions.Session, 'request') +class TestBlobsService(TestCase): + def setUp(self): + self.service = Blobs(user='octocat', repo='repo') + + def test_GET(self, reqm): + reqm.return_value = mock_response() + self.service.get('abc123') + self.assertEqual(reqm.call_args[0], + ('get', _('repos/octocat/repo/git/blobs/abc123'))) + + def test_CREATE(self, reqm): + reqm.return_value = mock_response('post') + self.service.create({'content': 'hello, friends', 'encoding': + 'utf-8'}) + self.assertEqual(reqm.call_args[0], + ('post', _('repos/octocat/repo/git/blobs'))) + + +@patch.object(requests.sessions.Session, 'request') +class TestCommitsService(TestCase): + def setUp(self): + self.service = Commits(user='octocat', repo='repo') + + def test_GET(self, reqm): + reqm.return_value = mock_response() + self.service.get('abc123') + self.assertEqual( + reqm.call_args[0], + ('get', _('repos/octocat/repo/git/commits/abc123')) + ) + + def test_CREATE(self, reqm): + reqm.return_value = mock_response('post') + self.service.create({ + 'message': 'hello', + 'tree': 'abc123', + 'parents': ['mom', 'dad'], + }) + self.assertEqual( + reqm.call_args[0], + ('post', _('repos/octocat/repo/git/commits')) + ) + +@patch.object(requests.sessions.Session, 'request') +class TestReferencesService(TestCase): + def setUp(self): + self.service = References(user='user', repo='repo') + + def test_GET(self, reqm): + reqm.return_value = mock_response() + self.service.get('heads/fnord') + self.assertEqual( + reqm.call_args[0], + ('get', _('repos/user/repo/git/refs/heads/fnord')) + ) + + def test_LIST(self, reqm): + reqm.return_value = mock_response() + self.service.list() + self.assertEqual( + reqm.call_args[0], + ('get', _('repos/user/repo/git/refs')) + ) + + def test_create(self, reqm): + reqm.return_value = mock_response('post') + self.service.create({'sha': 'hello', 'ref': 'something'}) + self.assertEqual( + reqm.call_args[0], + ('post', _('repos/user/repo/git/refs')) + ) + + def test_update(self, reqm): + reqm.return_value = mock_response('patch') + self.service.update('master', {'sha': 'abc123'}) + self.assertEqual( + reqm.call_args[0], + ('patch', _('repos/user/repo/git/refs/master')) + ) + + def test_delete(self, reqm): + reqm.return_value = mock_response('delete') + self.service.delete('branch') + self.assertEqual( + reqm.call_args[0], + ('delete', _('repos/user/repo/git/refs/branch')) + ) + +@patch.object(requests.sessions.Session, 'request') +class TestTagsService(TestCase): + def setUp(self): + self.service = Tags(user='user', repo='repo') + + def test_GET(self, reqm): + reqm.return_value = mock_response() + self.service.get('abc123') + self.assertEqual( + reqm.call_args[0], + ('get', _('repos/user/repo/git/tags/abc123')) + ) + + def test_CREATE(self, reqm): + reqm.return_value = mock_response('post') + self.service.create({'tag': 'v1.2.3', 'message': 'a tag', + 'object': 'abc123', 'type': 'commit'}) + self.assertEqual( + reqm.call_args[0], + ('post', _('repos/user/repo/git/tags')) + ) + + +@patch.object(requests.sessions.Session, 'request') +class TestTreesService(TestCase): + def setUp(self): + self.service = Trees(user='user', repo='repo') + + def test_GET(self, reqm): + reqm.return_value = mock_response() + self.service.get('abc123') + self.assertEqual( + reqm.call_args[0], + ('get', _('repos/user/repo/git/trees/abc123')) + ) + + def test_GET_recursive(self, reqm): + reqm.return_value = mock_response() + self.service.get('abc123', recursive=True) + self.assertEqual( + reqm.call_args[0], + ('get', _('repos/user/repo/git/trees/abc123?recursive=1')) + ) + + def test_CREATE(self, reqm): + reqm.return_value = mock_response('post') + self.service.create({ + 'tree': [ + {'path': 'foo.txt', 'mode': '100644', 'type': 'blob', + 'sha': 'abc123'}, + ], + }) + self.assertEqual( + reqm.call_args[0], + ('post', _('repos/user/repo/git/trees')) + ) -- cgit v1.2.3-59-g8ed1b From 286cf17b23890b709a7b55ecb21148af88577779 Mon Sep 17 00:00:00 2001 From: Nat Williams Date: Mon, 16 Apr 2012 13:48:54 -0500 Subject: add some docs I missed --- pygithub3/requests/git_data/blobs.py | 2 -- pygithub3/requests/git_data/commits.py | 2 -- pygithub3/services/git_data/blobs.py | 10 +++++++++- pygithub3/services/git_data/commits.py | 8 +++++++- pygithub3/services/git_data/references.py | 16 +++++++++++++--- 5 files changed, 29 insertions(+), 9 deletions(-) (limited to 'pygithub3') diff --git a/pygithub3/requests/git_data/blobs.py b/pygithub3/requests/git_data/blobs.py index 4a49c6b..9ce500a 100644 --- a/pygithub3/requests/git_data/blobs.py +++ b/pygithub3/requests/git_data/blobs.py @@ -5,13 +5,11 @@ from pygithub3.resources.git_data import Blob class Get(Request): - uri = 'repos/{user}/{repo}/git/blobs/{sha}' resource = Blob class Create(Request): - uri = 'repos/{user}/{repo}/git/blobs' resource = Blob body_schema = { diff --git a/pygithub3/requests/git_data/commits.py b/pygithub3/requests/git_data/commits.py index 936d3c7..caf1e7d 100644 --- a/pygithub3/requests/git_data/commits.py +++ b/pygithub3/requests/git_data/commits.py @@ -16,5 +16,3 @@ class Create(Request): 'schema': ('message', 'tree', 'parents', 'author', 'committer'), 'required': ('message', 'tree', 'parents'), } - - diff --git a/pygithub3/services/git_data/blobs.py b/pygithub3/services/git_data/blobs.py index d5baa2d..4f1a6e7 100644 --- a/pygithub3/services/git_data/blobs.py +++ b/pygithub3/services/git_data/blobs.py @@ -11,6 +11,8 @@ class Blobs(Service): """Get a particular blob :param str sha: The sha of the blob to get + :param str user: Username + :param str repo: Repository """ request = self.make_request('git_data.blobs.get', sha=sha, @@ -18,7 +20,13 @@ class Blobs(Service): return self._get(request) def create(self, data, user=None, repo=None): - """Create a blob""" + """Create a blob + + :param dict data: Data describing the blob to create + :param str user: Username + :param str repo: Repository + + """ request = self.make_request('git_data.blobs.create', body=data, user=user, repo=repo) return self._post(request) diff --git a/pygithub3/services/git_data/commits.py b/pygithub3/services/git_data/commits.py index cdca300..4debd95 100644 --- a/pygithub3/services/git_data/commits.py +++ b/pygithub3/services/git_data/commits.py @@ -8,7 +8,13 @@ class Commits(Service): """Consume `Commits API `_""" def get(self, sha, user=None, repo=None): - """get a commit from the current repo""" + """get a commit from the current repo + + :param str sha: SHA of the Commit that you want. + :param str user: Username + :param str repo: Repository + + """ request = self.make_request('git_data.commits.get', sha=sha, user=user, repo=repo) return self._get(request) diff --git a/pygithub3/services/git_data/references.py b/pygithub3/services/git_data/references.py index 8ae0865..3a24f90 100644 --- a/pygithub3/services/git_data/references.py +++ b/pygithub3/services/git_data/references.py @@ -13,6 +13,10 @@ class References(Service): .. note:: Remember that branch references look like "heads/" + :param str ref: the name of the reference to get + :param str user: Username + :param str repo: Repository + """ return self._get( self.make_request('git_data.references.get', ref=ref, user=user, @@ -24,6 +28,8 @@ class References(Service): :param str namespace: Limit the request to a particular type of reference. For example, ``heads`` or ``tags``. + :param str user: Username + :param str repo: Repository """ return self._get( @@ -34,8 +40,8 @@ class References(Service): """Create a reference :param dict body: Data describing the reference to create - :param str user: username - :param str repo: repository name + :param str user: Username + :param str repo: Repository """ return self._post( @@ -47,7 +53,9 @@ class References(Service): """Update an existing reference :param str ref: The SHA of the reference to update - :param dict body: data + :param dict body: Data to update the reference with + :param str user: Username + :param str repo: Repository """ return self._patch( @@ -59,6 +67,8 @@ class References(Service): """Delete a reference :param str ref: The SHA of the reference to delete + :param str user: Username + :param str repo: Repository """ return self._delete( -- cgit v1.2.3-59-g8ed1b From f1e781f49d89aff903d8b755fbc6733937673828 Mon Sep 17 00:00:00 2001 From: Nat Williams Date: Mon, 16 Apr 2012 15:37:48 -0500 Subject: def != class --- pygithub3/services/git_data/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pygithub3') diff --git a/pygithub3/services/git_data/__init__.py b/pygithub3/services/git_data/__init__.py index a12ddea..4a3ff9f 100644 --- a/pygithub3/services/git_data/__init__.py +++ b/pygithub3/services/git_data/__init__.py @@ -8,7 +8,7 @@ from .references import References from .tags import Tags from .trees import Trees -def GitData(Service): +class GitData(Service): """Consume `Git Data API `_""" def __init__(self, **config): -- cgit v1.2.3-59-g8ed1b From 30c1cec25eff0a37ad494f57bfc8fce7dedf5de2 Mon Sep 17 00:00:00 2001 From: Nat Williams Date: Mon, 16 Apr 2012 15:39:27 -0500 Subject: add docs and a few little pep8 tweaks --- docs/git_data.rst | 86 ++++++++++++++++++++++++++++++++++ docs/services.rst | 1 + pygithub3/requests/git_data/blobs.py | 2 +- pygithub3/requests/git_data/tags.py | 1 - pygithub3/resources/gists.py | 1 + pygithub3/resources/git_data.py | 3 +- pygithub3/services/git_data/commits.py | 2 - 7 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 docs/git_data.rst (limited to 'pygithub3') diff --git a/docs/git_data.rst b/docs/git_data.rst new file mode 100644 index 0000000..549420b --- /dev/null +++ b/docs/git_data.rst @@ -0,0 +1,86 @@ +.. _Git Data service: + +Git Data services +================= + +**Example**:: + + from pygithub3 import Github + + gh = Github(user='someone', repo='some_repo') + + a_blob = gh.git_data.blobs.get('a long sha') + + dev_branch = gh.git_data.references.get('heads/add_a_thing') + + +GitData +------- + +.. autoclass:: pygithub3.services.git_data.GitData + :members: + + .. attribute:: blobs + + :ref:`Blobs service` + + .. attribute:: commits + + :ref:`Commits service` + + .. attribute:: references + + :ref:`References service` + + .. attribute:: tags + + :ref:`Tags service` + + .. attribute:: trees + + :ref:`Trees service` + + +.. _Blobs service: + +Blobs +----- + +.. autoclass:: pygithub3.services.git_data.Blobs + :members: + + +.. _Commits service: + +Commits +------- + +.. autoclass:: pygithub3.services.git_data.Commits + :members: + + +.. _References service: + +References +---------- + +.. autoclass:: pygithub3.services.git_data.References + :members: + + +.. _Tags service: + +Tags +---- + +.. autoclass:: pygithub3.services.git_data.Tags + :members: + + +.. _Trees service: + +Trees +----- + +.. autoclass:: pygithub3.services.git_data.Trees + :members: diff --git a/docs/services.rst b/docs/services.rst index 71fa690..2fbd2ee 100644 --- a/docs/services.rst +++ b/docs/services.rst @@ -72,5 +72,6 @@ List of services users repos gists + git_data .. _mimetypes: http://developer.github.com/v3/mime diff --git a/pygithub3/requests/git_data/blobs.py b/pygithub3/requests/git_data/blobs.py index 9ce500a..a4bddd6 100644 --- a/pygithub3/requests/git_data/blobs.py +++ b/pygithub3/requests/git_data/blobs.py @@ -14,5 +14,5 @@ class Create(Request): resource = Blob body_schema = { 'schema': ('content', 'encoding'), - 'required': ('content', 'encoding'), #TODO: is enc really required? + 'required': ('content', 'encoding'), # TODO: is enc really required? } diff --git a/pygithub3/requests/git_data/tags.py b/pygithub3/requests/git_data/tags.py index 8b37f0e..dbc8da4 100644 --- a/pygithub3/requests/git_data/tags.py +++ b/pygithub3/requests/git_data/tags.py @@ -13,4 +13,3 @@ class Create(Request): 'schema': ('tag', 'message', 'object', 'type', 'tagger'), 'required': ('type',), } - diff --git a/pygithub3/resources/gists.py b/pygithub3/resources/gists.py index 7e9550a..89425bf 100644 --- a/pygithub3/resources/gists.py +++ b/pygithub3/resources/gists.py @@ -15,6 +15,7 @@ class Fork(Resource): _dates = ('created_at', ) _maps = {'user': User} + def __str__(self): return '' diff --git a/pygithub3/resources/git_data.py b/pygithub3/resources/git_data.py index 4adcf5d..4d12e01 100644 --- a/pygithub3/resources/git_data.py +++ b/pygithub3/resources/git_data.py @@ -17,7 +17,8 @@ class Reference(Resource): class Tag(Resource): _maps = {'object': Commit, - 'tagger': Author,} # committer? tagger? + 'tagger': Author} # committer? tagger? + def __str__(self): return '' % getattr(self, 'tag', '') diff --git a/pygithub3/services/git_data/commits.py b/pygithub3/services/git_data/commits.py index 4debd95..25e8775 100644 --- a/pygithub3/services/git_data/commits.py +++ b/pygithub3/services/git_data/commits.py @@ -31,5 +31,3 @@ class Commits(Service): self.make_request('git_data.commits.create', user=user, repo=repo, body=data) ) - - -- cgit v1.2.3-59-g8ed1b