From f25c54e1d4eefb11c18f3de85270a4b19edea3ce Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Tue, 19 Mar 2013 21:27:34 +0100 Subject: [PATCH] Fix documentation (pull #148) I had to separate class NotificationSubject in its own file, to cope with my basic doc generation. --- doc/conf.py | 2 +- github/Notification.py | 80 +++++------------------------------ github/NotificationSubject.py | 71 +++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 70 deletions(-) create mode 100644 github/NotificationSubject.py diff --git a/doc/conf.py b/doc/conf.py index 9e311aa9..958de460 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -252,7 +252,7 @@ with open("github_objects.rst", "w") as github_objects: github_objects.write("\n") github_objects.write(".. toctree::\n") - for obj in ["AuthenticatedUser", "Authorization", "AuthorizationApplication", "Branch", "Commit", "CommitComment", "CommitStats", "CommitStatus", "Comparison", "ContentFile", "Download", "Event", "File", "Gist", "GistComment", "GistFile", "GistHistoryState", "GitAuthor", "GitBlob", "GitCommit", "GitObject", "GitignoreTemplate", "GitRef", "GitTag", "GitTree", "GitTreeElement", "Hook", "HookDescription", "HookResponse", "Issue", "IssueComment", "IssueEvent", "IssuePullRequest", "Label", "Milestone", "NamedUser", "Organization", "Permissions", "Plan", "PullRequest", "PullRequestComment", "PullRequestMergeStatus", "PullRequestPart", "Repository", "RepositoryKey", "Tag", "Team", "UserKey"]: + for obj in ["AuthenticatedUser", "Authorization", "AuthorizationApplication", "Branch", "Commit", "CommitComment", "CommitStats", "CommitStatus", "Comparison", "ContentFile", "Download", "Event", "File", "Gist", "GistComment", "GistFile", "GistHistoryState", "GitAuthor", "GitBlob", "GitCommit", "GitObject", "GitignoreTemplate", "GitRef", "GitTag", "GitTree", "GitTreeElement", "Hook", "HookDescription", "HookResponse", "Issue", "IssueComment", "IssueEvent", "IssuePullRequest", "Label", "Milestone", "NamedUser", "Notification", "NotificationSubject", "Organization", "Permissions", "Plan", "PullRequest", "PullRequestComment", "PullRequestMergeStatus", "PullRequestPart", "Repository", "RepositoryKey", "Tag", "Team", "UserKey"]: github_objects.write(" github_objects/" + obj + "\n") with open("github_objects/" + obj + ".rst", "w") as github_object: github_object.write(obj + "\n") diff --git a/github/Notification.py b/github/Notification.py index e867efeb..42e15231 100644 --- a/github/Notification.py +++ b/github/Notification.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- -# Copyright 2013 Peter Golm +# Copyright 2013 Peter Golm and Vincent Jacques # golm.peter@gmail.com +# vincent@vincent-jacques.net # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ @@ -13,17 +14,15 @@ # You should have received a copy of the GNU Lesser General Public License along with PyGithub. If not, see . -import datetime - import github.GithubObject -import github.PaginatedList import github.Repository +import github.NotificationSubject class Notification(github.GithubObject.GithubObject): """ - http://developer.github.com/v3/todo + This class represents Notifications as returned for example by http://developer.github.com/v3/activity/notifications/#list-your-notifications """ @property @@ -37,7 +36,7 @@ class Notification(github.GithubObject.GithubObject): @property def repository(self): """ - :type: class: `github.Repository.Repository` + :type: :class:`github.Repository.Repository` """ self._completeIfNotSet(self._repository) return self._NoneIfNotSet(self._repository) @@ -45,7 +44,7 @@ class Notification(github.GithubObject.GithubObject): @property def subject(self): """ - :type: class: `github.Notification.NotificationSubject` + :type: :class:`github.NotificationSubject.NotificationSubject` """ self._completeIfNotSet(self._subject) return self._NoneIfNotSet(self._subject) @@ -95,77 +94,20 @@ class Notification(github.GithubObject.GithubObject): assert attributes["id"] is None or isinstance(attributes["id"], (str, unicode)), attributes["id"] self._id = attributes["id"] if "repository" in attributes: - assert attributes["repository"] is None or isinstance(attributes["repository"], (dict)), attributes["repository"] + assert attributes["repository"] is None or isinstance(attributes["repository"], dict), attributes["repository"] self._repository = None if attributes["repository"] is None else github.Repository.Repository(self._requester, attributes["repository"], completed=False) if "subject" in attributes: - assert attributes["subject"] is None or isinstance(attributes["subject"], (dict)), attributes["subject"] - self._subject = None if attributes["subject"] is None else NotificationSubject(self._requester, attributes["subject"], completed=False) + assert attributes["subject"] is None or isinstance(attributes["subject"], dict), attributes["subject"] + self._subject = None if attributes["subject"] is None else github.NotificationSubject.NotificationSubject(self._requester, attributes["subject"], completed=False) if "reason" in attributes: assert attributes["reason"] is None or isinstance(attributes["reason"], (str, unicode)), attributes["reason"] self._reason = attributes["reason"] if "unread" in attributes: - assert attributes["unread"] is None or isinstance(attributes["unread"], (bool,)), attributes["unread"] + assert attributes["unread"] is None or isinstance(attributes["unread"], bool), attributes["unread"] self._unread = attributes["unread"] if "updated_at" in attributes: assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] - self._updated_at = datetime.datetime.strptime(attributes["updated_at"], "%Y-%m-%dT%H:%M:%SZ"); + self._updated_at = self._parseDatetime(attributes["updated_at"]); if "url" in attributes: assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] - -class NotificationSubject(github.GithubObject.GithubObject): - """ - http://developer.github.com/v3/todo - """ - - @property - def title(self): - """ - :type: string - """ - self._completeIfNotSet(self._title) - return self._NoneIfNotSet(self._title) - - @property - def url(self): - """ - :type: string - """ - self._completeIfNotSet(self._url) - return self._NoneIfNotSet(self._url) - - @property - def latest_comment_url(self): - """ - :type: string - """ - self._completeIfNotSet(self._latest_comment_url) - return self._NoneIfNotSet(self._latest_comment_url) - - @property - def type(self): - """ - :type: string - """ - self._completeIfNotSet(self._type) - return self._NoneIfNotSet(self._type) - - def _initAttributes(self): - self._title = github.GithubObject.NotSet - self._url = github.GithubObject.NotSet - self._latest_comment_url = github.GithubObject.NotSet - self._type = github.GithubObject.NotSet - - def _useAttributes(self, attributes): - if "title" in attributes: # pragma no branch - assert attributes["title"] is None or isinstance(attributes["title"], (str, unicode)), attributes["title"] - self._title = attributes["title"] - if "url" in attributes: # pragma no branch - assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] - self._url = attributes["url"] - if "latest_comment_url" in attributes: # pragma no branch - assert attributes["latest_comment_url"] is None or isinstance(attributes["latest_comment_url"], (str, unicode)), attributes["latest_comment_url"] - self._latest_comment_url = attributes["latest_comment_url"] - if "type" in attributes: # pragma no branch - assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] - self._type = attributes["type"] \ No newline at end of file diff --git a/github/NotificationSubject.py b/github/NotificationSubject.py new file mode 100644 index 00000000..11846788 --- /dev/null +++ b/github/NotificationSubject.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- + +# Copyright 2013 Peter Golm and Vincent Jacques +# golm.peter@gmail.com +# vincent@vincent-jacques.net + +# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ + +# PyGithub is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public License along with PyGithub. If not, see . + +import github.GithubObject + + +class NotificationSubject(github.GithubObject.BasicGithubObject): + """ + This class represents Subjects of Notifications as returned for example by http://developer.github.com/v3/activity/notifications/#list-your-notifications + """ + + @property + def title(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._title) + + @property + def url(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._url) + + @property + def latest_comment_url(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._latest_comment_url) + + @property + def type(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._type) + + def _initAttributes(self): + self._title = github.GithubObject.NotSet + self._url = github.GithubObject.NotSet + self._latest_comment_url = github.GithubObject.NotSet + self._type = github.GithubObject.NotSet + + def _useAttributes(self, attributes): + if "title" in attributes: # pragma no branch + assert attributes["title"] is None or isinstance(attributes["title"], (str, unicode)), attributes["title"] + self._title = attributes["title"] + if "url" in attributes: # pragma no branch + assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] + self._url = attributes["url"] + if "latest_comment_url" in attributes: # pragma no branch + assert attributes["latest_comment_url"] is None or isinstance(attributes["latest_comment_url"], (str, unicode)), attributes["latest_comment_url"] + self._latest_comment_url = attributes["latest_comment_url"] + if "type" in attributes: # pragma no branch + assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] + self._type = attributes["type"]