From d5202efc25008ffa44c9049c578e652e989abd32 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 24 Feb 2012 11:46:34 +0000 Subject: [PATCH] Labels --- IntegrationTest.py | 3 +++ ReferenceOfApis.md | 10 +++++----- ReferenceOfClasses.md | 9 +++++++++ github/GithubObjects.py | 17 +++++++++++++++++ 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/IntegrationTest.py b/IntegrationTest.py index 29002251..5e145a1a 100644 --- a/IntegrationTest.py +++ b/IntegrationTest.py @@ -157,6 +157,8 @@ class IntegrationTest: r.create_git_ref( "refs/tags/a_tag", tag.sha ) # Issues and milestones + l = r.create_label( "Label created by PyGithub", "00FF00" ) + l.edit( "Label created and modified by PyGithub", "FFFF00" ) m = r.create_milestone( title = "This milestone was created by PyGithub" ) m.edit( title = m.title, description = "And the description was modified by PyGithub as well" ) m = r.create_milestone( title = "This milestone was also created by PyGithub" ) @@ -212,6 +214,7 @@ class IntegrationTest: if blob.encoding == "base64": print base64.b64decode( blob.content ), print + print " Labels:", ", ".join( l.name + " (" + l.color + ")" for l in r.get_labels() ) print " Milestones:", ", ".join( m.title + " (created by " + m.creator.login + ")" for m in r.get_milestones() ) print " Closed milestones:", ", ".join( m.title for m in r.get_milestones( state = "closed" ) ) print diff --git a/ReferenceOfApis.md b/ReferenceOfApis.md index 34c99cf3..8dd9b453 100644 --- a/ReferenceOfApis.md +++ b/ReferenceOfApis.md @@ -290,14 +290,14 @@ API `/repos/:user/:repo/keys/:id` API `/repos/:user/:repo/labels` =============================== -* GET: (TODO SOON) -* POST: (TODO SOON) +* GET: `Repository.get_labels()`: list of `Label` +* POST: `Repository.create_label( ... )`: `Label` API `/repos/:user/:repo/labels/:id` =================================== -* GET: (TODO SOON) -* PATCH: (TODO SOON) -* DELETE: (TODO SOON) +* GET: `Repository.get_label( id )`: `Label` +* PATCH: `Label.edit( ... )` +* DELETE: `Label.delete()` API `/repos/:user/:repo/languages` ================================== diff --git a/ReferenceOfClasses.md b/ReferenceOfClasses.md index 9e9ea7cf..b40bda2f 100644 --- a/ReferenceOfClasses.md +++ b/ReferenceOfClasses.md @@ -139,10 +139,19 @@ Teams Issues and milestones --------------------- +* `get_labels()`: list of `Label` +* `create_label( ... )`: `Label`: see [API](http://developer.github.com/v3/issues/labels/#create-a-label) for parameters +* `get_label( id )`: `Label` * `get_milestones( ... )`: list of `Milestone`: see [API](http://developer.github.com/v3/issues/milestones/#list-milestones-for-a-repository) for parameters * `create_milestone( ... )`: `Milestone`: see [API](http://developer.github.com/v3/issues/milestones/#create-a-milestone) for parameters * `get_milestone( number )`: `Milestone` +Class `Label` +================ +* Attributes: see [API](http://developer.github.com/v3/issues/labels/#get-a-single-label) +* `edit( ... )`: see [API](http://developer.github.com/v3/issues/labels/#update-a-label) for parameters +* `delete()` + Class `Milestone` ================ * Attributes: see [API](http://developer.github.com/v3/issues/milestones/#get-a-single-milestone) diff --git a/github/GithubObjects.py b/github/GithubObjects.py index 454cc765..f01897aa 100644 --- a/github/GithubObjects.py +++ b/github/GithubObjects.py @@ -1,4 +1,5 @@ import itertools +import urllib from GithubObject import * @@ -115,6 +116,17 @@ GitTag = GithubObject( ), ) +Label = GithubObject( + "Label", + BaseUrl( lambda obj: obj._repo._baseUrl + "/labels/" + urllib.quote( obj.name ) ), + BasicAttributes( + "url", "name", "color", + "_repo", ### Ugly hack + ), + Editable( [ "name", "color" ], [] ), + Deletable(), +) + Milestone = GithubObject( "Milestone", BaseUrl( lambda obj: obj._repo._baseUrl + "/milestones/" + str( obj.number ) ), @@ -168,6 +180,11 @@ Repository = GithubObject( ElementGetable( "git_tag", lambda repo, sha: { "_repo": repo, "sha": sha } ), ElementCreatable( "git_tag", [ "tag", "message", "object", "type" ], [ "tagger" ], __modifyAttributesForObjectsReferingRepo ) ), + ListAttribute( "labels", Label, + ListGetable( [], [] ), + ElementGetable( "label", lambda repo, name: { "_repo": repo, "name": name } ), + ElementCreatable( "label", [ "name", "color" ], [], __modifyAttributesForObjectsReferingRepo ), + ), ListAttribute( "milestones", Milestone, ListGetable( [], [ "state", "sort", "direction" ] ), ElementGetable( "milestone", lambda repo, number: { "_repo": repo, "number": number } ),