0.5.0: 2013-02-16
-----------------

- 100% (mock) test coverage

- Add support for the announced_ meta_ endpoint.

- Add support for conditional refreshing, e.g.,

  .. code-block:: python

      import github3

      u = github3.user('sigmavirus24')

      # some time later

      u.refresh()  # Will ALWAYS send a GET request and lower your rate limit
      u.refresh(True)  # Will send the GET with a header such that if nothing
                       # has changed, it will not count against your rate limit
                       # otherwise you'll get the updated user object.

- Add support for conditional iterables. What this means is that you can do:

  .. code-block:: python

      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.keys

- In github3.repos.Repository, ``pubsubhubbub`` has been removed. Use
  github3.github.Github.pubsubhubbub instead

- In github3.api, ``iter_repo_issues``'s signature has been corrected.

- Remove ``list_{labels, comments, events}`` methods from github3.issues.Issue

- Remove ``list_{comments, commits, files}`` methods from
  github3.pulls.PullRequest

- In github3.gists.Gist:

  - the ``user`` attribute was changed by GitHub and is now the ``owner``
    attribute

  - the ``public`` attribute and the ``is_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 generic ``refresh`` method was added to most objects. This
    was overridden in the Gist object and would cause otherwise unexpected
    results.

- ``github3.events.Event.is_public()`` and ``github3.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 returns a boolean.

  - ``remove_all_labels`` and ``replace_labels`` now return lists. The former
    should return an empty list on a successful call. The latter should
    return a list of ``github3.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.

.. _announced:
    https://github.com/blog/1402-upcoming-changes-to-github-services
.. _meta:
    http://developer.github.com/v3/meta/
.. _sortable stars:
    http://developer.github.com/changes/2013-2-13-sortable-stars/
.. _pengwynn/octokit:
    https://github.com/pengwynn/octokit
