- Add
sort
andorder
parameters togithub3.GitHub.search_users
andgithub3.GitHub.search_repos
. - Add
iter_commits
togithub3.gists.Gist
as a means of re-requesting just the history from GitHub and iterating over it. - Add minimal logging (e.g.,
logging.getLogger('github3')
) - Re-organize the library.
- Calling
refresh(True)
on agithub3.structs.GitHubIterator
actually works as expected now. - API
iter_
methods now accept theetag
argument as theGitHub.iter_
methods do. - Make
github3.octocat
andgithub3.github.GitHub.octocat
both support sending messages to make the Octocat say things. (Think cowsay) - Remove vendored dependency of PySO8601.
- Split
GitHub.iter_repos
intoGitHub.iter_user_repos
andGitHub.iter_repos
. As a consequencegithub3.iter_repos
is nowgithub3.iter_user_repos
IssueComment.update
was corrected to match GitHub's documentation
- Add missing optional parameter to Repository.contents. Thanks @tpetr
- Stop trying to decode the byte strings returned by
b64decode
. Fixes #72
- Hot fix an issue when a user doesn't have a real name set
100% (mock) test coverage
Add support for conditional refreshing, e.g.,
import github3 u = github3.user('sigmavirus24') # some time later u.refresh() # Will ALWAYS send a GET request and lower your ratelimit u.refresh(True) # Will send the GET with a header such that if nothing # has changed, it will not count against your ratelimit # otherwise you'll get the updated user object.
Add support for conditional iterables. What this means is that you can do:
import github3 i = github3.iter_all_repos(10) for repo in i: # do stuff i = github3.iter_all_repos(10, etag=i.etag)
And the second call will only give you the new repositories since the last request. This mimics behavior in pengwynn/octokit
Add support for sortable stars.
In github3.users.User,
iter_keys
now allows you to iterate over any user's keys. No name is returned for each key. This is the equivalent of visiting: github.com/:user.keysIn github3.repos.Repository,
pubsubhubbub
has been removed. Use github3.github.Github.pubsubhubbub insteadIn github3.api,
iter_repo_issues
's signature has been corrected.Remove
list_{labels, comments, events}
methods from github3.issues.IssueRemove
list_{comments, commits, files}
methods from github3.pulls.PullRequestIn github3.gists.Gist:
- the
user
attribute was changed by GitHub and is now theowner
attribute - the
public
attribute and theis_public
method return the same information. The method will be removed in the next version. - the
is_starred
method now requires authentication - the default
refresh
method is no longer over-ridden. In a change made in before, a genericrefresh
method was added to most objects. This was overridden in the Gist object and would cause otherwise unexpected results.
- the
github3.events.Event.is_public()
andgithub3.events.Event.public
now return the same information. In the next version, the former will be removed.In github3.issues.Issue
add_labels
now returns the list of Labels on the issue instead of a boolean.remove_label
now retuns a boolean.remove_all_labels
andreplace_labels
now return lists. The former should return an empty list on a successful call. The latter should return a list ofgithub3.issue.Label
objects.
Now we won't get spurious GitHubErrors on 404s, only on other expected errors whilst accessing the json in a response. All methods that return an object can now actually return None if it gets a 404 instead of just raising an exception. (Inspired by #49)
GitHubStatus API now works.
- In github3.legacy.LegacyRepo
has_{downloads,issues,wiki}
are now attributes.is_private()
and theprivate
attribute return the same thingis_private()
will be deprecated in the next release.
- In github3.repos.Repository
is_fork()
is now deprecated in favor of thefork
attributeis_private()
is now deprecated in favor of theprivate
attribute
- In github3.repos.Hook
is_active()
is now deprecated in favor of theactive
attribute
- In github3.pulls.PullRequest
is_mergeable()
is now deprecated in favor of themergeable
attribute
- In github3.notifications.Thread
is_unread()
is now deprecated in favor of theunread
pubsubhubbub()
is now present on theGitHub
object and will be removed from theRepository
object in the next release- 70% test coverage
In github3.repos.Repository
- is_fork() and fork return the same thing
- is_private() and private return the same thing as well
- has_downloads, has_issues, has_wiki are now straight attributes
In github3.repos.Hook
- is_active() and active return the same value
In github3.pulls.PullRequest
- is_mergeable() and mergeable are now the same
- repository now returns a tuple of the login and name of the repository it belongs to
In github3.notifications.Thread
- is_unread() and unread are now the same
In github3.gists
- GistFile.filename and GistFile.name return the same information
- Gist.history now lists the history of the gist
- GistHistory is an object representing one commit or version of the history
- You can retrieve gists at a specific version with GistHistory.get_gist()
github3.orgs.Organization.iter_repos now accepts all types
list_* methods on Organization objects that were missed are now deleted
Some objects now have
__str__
methods. You can now do things like:import github3 u = github3.user('sigmavirus24') r = github3.repository(u, 'github3.py')
And
import github3 r = github3.repository('sigmavirus24', 'github3.py') template = """Some kind of template where you mention this repository {0}""" print(template.format(r)) # Some kind of template where you mention this repository # sigmavirus24/github3.py
Current list of objects with this feature:
- github3.users.User (uses the login name)
- github3.users.Key (uses the key text)
- github3.users.Repository (uses the login/name pair)
- github3.users.RepoTag (uses the tag name)
- github3.users.Contents (uses the decoded content)
60% test coverage with mock
Upgrade to requests 1.0.x
- MAJOR API CHANGES:
GitHub.iter_subscribed
-->GitHub.iter_subscriptions
- Broken
list_*
functions in github3.api have been renamed to the correctiter_*
methods onGitHub
. - Removed
list_*
functions fromRepository
,Gist
,Organization
, andUser
objects
- Added zen of GitHub method.
- More tests
- Changed the way
Repository.edit
works courtesy of Kristian Glass (@doismellburning) - Changed
Repository.contents
behaviour when acting on a 404. - 50% test coverage via mock tests
- Add API for GitHub Enterprise customers.
- Handle 500 errors better, courtesy of Kristian Glass (@doismellburning)
- Handle sending json with % symbols better, courtesy of Kristian Glass
- Correctly handle non-GitHub committers and authors courtesy of Paul Swartz (@paulswartz)
- Correctly display method signatures in documentation courtesy of (@seveas)
- unit tests implemented using mock instead of hitting the GitHub API (#37)
- removed
list_*
functions from GitHub object - Notifications API coverage
- Support for the complete GitHub API (accomplished)
- Now also includes the Statuses API
- Also covers the auto_init parameters to the Repository creation methodology
- Limited implementation of iterators in the place of list functions.
- 98% coverage by unit tests