Skip to content

Commit 897671d

Browse files
committed
Merge branch 'services/issues' of https://github.com/alejandrogomez/python-github3 into services/issues
Conflicts: docs/services.rst pygithub3/github.py pygithub3/requests/repos/__init__.py
2 parents ac2b75a + e2e9c95 commit 897671d

File tree

20 files changed

+1171
-0
lines changed

20 files changed

+1171
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
MANIFEST
66
docs/_build
77
dist/
8+
build/
89
*egg-info

docs/issues.rst

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
.. _Issues service:
2+
3+
Issues services
4+
===============
5+
6+
**Fast sample**::
7+
8+
from pygithub3 import Github
9+
10+
auth = dict(login='octocat', password='pass')
11+
gh = Github(**auth)
12+
13+
octocat_issues = gh.issues.list()
14+
octocat_repo_issues = gh.issues.list_by_repo('octocat', 'Hello-World')
15+
16+
Issues
17+
------
18+
19+
.. autoclass:: pygithub3.services.issues.Issue
20+
:members:
21+
22+
.. attribute:: comments
23+
24+
:ref:`Comments service`
25+
26+
.. attribute:: events
27+
28+
:ref:`Events service`
29+
30+
.. attribute:: labels
31+
32+
:ref:`Labels service`
33+
34+
.. attribute:: milestones
35+
36+
:ref:`Milestones service`
37+
38+
.. _Comments service:
39+
40+
Comments
41+
--------
42+
43+
.. autoclass:: pygithub3.services.issues.Comments
44+
:members:
45+
46+
.. _Events service:
47+
48+
Events
49+
------
50+
51+
.. autoclass:: pygithub3.services.issues.Events
52+
:members:
53+
54+
.. _Labels service:
55+
56+
Labels
57+
------
58+
59+
.. autoclass:: pygithub3.services.issues.Labels
60+
:members:
61+
62+
.. _Milestones service:
63+
64+
Milestones
65+
----------
66+
67+
.. autoclass:: pygithub3.services.issues.Milestones
68+
:members:
69+
70+
.. _github issues doc: http://developer.github.com/v3/issues
71+
.. _github comments doc: http://developer.github.com/v3/issues/comments
72+
.. _github events doc: http://developer.github.com/v3/issues/events
73+
.. _github labels doc: http://developer.github.com/v3/issues/labels
74+
.. _github milestones doc: http://developer.github.com/v3/issues/milestones

docs/services.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,6 @@ List of services
7575
git_data
7676
pull_requests
7777
orgs
78+
issues
7879

7980
.. _mimetypes: http://developer.github.com/v3/mime

pygithub3/github.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,17 @@ def __init__(self, **config):
2020
from pygithub3.services.git_data import GitData
2121
from pygithub3.services.pull_requests import PullRequests
2222
from pygithub3.services.orgs import Org
23+
from pygithub3.services.issues import Issue
2324
self._users = User(**config)
2425
self._repos = Repo(**config)
2526
self._gists = Gist(**config)
2627
self._git_data = GitData(**config)
2728
self._pull_requests = PullRequests(**config)
2829
self._orgs = Org(**config)
30+
self._users = User(**config)
31+
self._repos = Repo(**config)
32+
self._gists = Gist(**config)
33+
self._issues = Issue(**config)
2934

3035
@property
3136
def remaining_requests(self):
@@ -73,3 +78,9 @@ def orgs(self):
7378
:ref:`Orgs service <Orgs service>`
7479
"""
7580
return self._orgs
81+
82+
def issues(self):
83+
"""
84+
:ref:`Issues service <Issues service>`
85+
"""
86+
return self._issues
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
from pygithub3.requests.base import Request, ValidationError
5+
from pygithub3.resources.issues import Issue
6+
7+
class List(Request):
8+
9+
uri = 'issues'
10+
resource = Issue
11+
body_schema = {
12+
'schema': ('filter', 'state', 'labels', 'sort', 'direction', 'since'),
13+
'required': ()
14+
}
15+
16+
17+
class List_by_repo(Request):
18+
19+
uri = 'repos/{user}/{repo}/issues'
20+
resource = Issue
21+
body_schema = {
22+
'schema': ('milestone', 'state', 'assignee', 'mentioned', 'labels',
23+
'sort', 'direction', 'since'),
24+
'required': ()
25+
}
26+
27+
28+
class Get(Request):
29+
30+
uri = 'repos/{user}/{repo}/issues/{number}'
31+
resource = Issue
32+
33+
34+
class Create(Request):
35+
36+
uri = 'repos/{user}/{repo}/issues'
37+
resource = Issue
38+
body_schema = {
39+
'schema': ('title', 'body', 'assignee', 'milestone', 'labels'),
40+
'required': ('title', )
41+
}
42+
43+
44+
class Edit(Request):
45+
46+
uri = 'repos/{user}/{repo}/issues/{number}'
47+
resource = Issue
48+
body_schema = {
49+
'schema': ('title', 'body', 'assignee', 'state', 'milestone', 'lables'),
50+
'required': ()
51+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
from pygithub3.requests.base import Request, ValidationError
5+
from pygithub3.resources.issues import Comment
6+
7+
class List(Request):
8+
9+
uri = 'repos/{user}/{repo}/issues/{number}/comments'
10+
resource = Comment
11+
12+
13+
class Get(Request):
14+
15+
uri = 'repos/{user}/{repo}/issues/comments/{id}'
16+
resource = Comment
17+
18+
19+
class Create(Request):
20+
21+
uri = 'repos/{user}/{repo}/issues/{number}/comments'
22+
resource = Comment
23+
body_schema = {
24+
'schema': ('body', ),
25+
'required': ('body', )
26+
}
27+
28+
29+
class Edit(Request):
30+
31+
uri = 'repos/{user}/{repo}/issues/comments/{id}'
32+
resource = Comment
33+
body_schema = {
34+
'schema': ('body', ),
35+
'required': ('body', )
36+
}
37+
38+
39+
class Delete(Request):
40+
41+
uri = 'repos/{user}/{repo}/issues/comments/{id}'
42+
resource = Comment
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
from pygithub3.requests.base import Request, ValidationError
5+
from pygithub3.resources.issues import Event
6+
7+
class List_by_issue(Request):
8+
9+
uri = 'repos/{user}/{repo}/issues/{number}/events'
10+
resource = Event
11+
12+
13+
class List_by_repo(Request):
14+
15+
uri = 'repos/{user}/{repo}/issues/events'
16+
resource = Event
17+
18+
19+
class Get(Request):
20+
21+
uri = 'repos/{user}/{repo}/issues/events/{id}'
22+
resource = Event
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# -*- encoding: utf-8 -*-
2+
3+
from pygithub3.requests.base import Request, ValidationError
4+
from pygithub3.resources.issues import Label
5+
6+
7+
8+
class Get(Request):
9+
uri = 'repos/{user}/{repo}/labels/{name}'
10+
resource = Label
11+
12+
13+
class Create(Request):
14+
uri = 'repos/{user}/{repo}/labels'
15+
resource = Label
16+
body_schema = {
17+
'schema': ('name', 'color'),
18+
'required': ('name', 'color' )
19+
}
20+
21+
def clean_body(self):
22+
color = self.body.get('color', '')
23+
if not Label.is_valid_color(color):
24+
raise ValidationError('colors must have 6 hexadecimal characters, '
25+
'without # in the beggining')
26+
else:
27+
return self.body
28+
29+
30+
class Update(Request):
31+
32+
uri = 'repos/{user}/{repo}/labels/{name}'
33+
resource = Label
34+
body_schema = {
35+
'schema': ('name', 'color'),
36+
'required': ('name', 'color' )
37+
}
38+
def clean_body(self):
39+
color = self.body.get('color', '')
40+
if not Label.is_valid_color(color):
41+
raise ValidationError('colors must have 6 hexadecimal characters, '
42+
'without # in the beggining')
43+
else:
44+
return self.body
45+
46+
47+
class Delete(Request):
48+
uri = 'repos/{user}/{repo}/labels/{name}'
49+
resource = Label
50+
51+
52+
class List_by_repo(Request):
53+
uri = 'repos/{user}/{repo}/labels'
54+
resource = Label
55+
56+
57+
58+
class List_by_issue(Request):
59+
uri = 'repos/{user}/{repo}/issues/{number}/labels'
60+
resource = Label
61+
62+
63+
class Add_to_issue(Request):
64+
uri = 'repos/{user}/{repo}/issues/{number}/labels'
65+
resource = Label
66+
67+
68+
class Remove_from_issue(Request):
69+
uri = 'repos/{user}/{repo}/issues/{number}/labels/{name}'
70+
resource = Label
71+
72+
73+
class Replace_all(Request):
74+
uri = 'repos/{user}/{repo}/issues/{number}/labels'
75+
resource = Label
76+
77+
78+
class Remove_all(Request):
79+
uri = 'repos/{user}/{repo}/issues/{number}/labels'
80+
resource = Label
81+
82+
83+
class List_by_milestone(Request):
84+
uri = 'repos/{user}/{repo}/milestones/{number}/labels'
85+
resource = Label
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# -*- encoding: utf-8 -*-
2+
3+
from pygithub3.requests.base import Request
4+
from pygithub3.resources.issues import Milestone
5+
6+
7+
class List(Request):
8+
uri = 'repos/{user}/{repo}/milestones'
9+
resource = Milestone
10+
11+
12+
class Get(Request):
13+
uri = 'repos/{user}/{repo}/milestones/{number}'
14+
resource = Milestone
15+
16+
17+
class Create(Request):
18+
uri = 'repos/{user}/{repo}/milestones'
19+
resource = Milestone
20+
body_schema = {
21+
'schema': ('title', 'state', 'description', 'due_on'),
22+
'required': ('title',)
23+
}
24+
25+
26+
class Update(Request):
27+
28+
uri = 'repos/{user}/{repo}/milestones/{number}'
29+
resource = Milestone
30+
body_schema = {
31+
'schema': ('title', 'state', 'description', 'due_on'),
32+
'required': ('title',)
33+
}
34+
35+
36+
class Delete(Request):
37+
uri = 'repos/{user}/{repo}/milestones/{number}'
38+
resource = Milestone

pygithub3/requests/repos/__init__.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from pygithub3.resources.orgs import Team
55
from pygithub3.resources.repos import Repo, Tag, Branch
66
from pygithub3.resources.users import User
7+
from pygithub3.resources.issues import Label, Milestone
78

89
class List(Request):
910

@@ -79,3 +80,17 @@ class List_branches(Request):
7980

8081
uri = 'repos/{user}/{repo}/branches'
8182
resource = Branch
83+
84+
class List_labels(Request):
85+
86+
uri = 'repos/{user}/{repo}/labels'
87+
resource = Label
88+
89+
class List_milestones(Request):
90+
91+
uri = 'repos/{user}/{repo}/milestones'
92+
resource = Milestone
93+
body_schema = {
94+
'schema': ('state', 'sort', 'direction'),
95+
'required': ()
96+
}

0 commit comments

Comments
 (0)