'Re-retrieve the information for this object.
The reasoning for the return value is the following example: ::
repos = [r.refresh() for r in g.repositories_by(\'kennethreitz\')]
Without the return value, that would be an array of ``None``\'s and you
would otherwise have to do: ::
repos = [r for i in g.repositories_by(\'kennethreitz\')]
[r.refresh() for r in repos]
Which is really an anti-pattern.
.. versionchanged:: 0.5
.. _Conditional Requests:
http://developer.github.com/v3/#conditional-requests
:param bool conditional: If True, then we will search for a stored
header (\'Last-Modified\', or \'ETag\') on the object and send that
as described in the `Conditional Requests`_ section of the docs
:returns: self'

def refresh(self, conditional=False):

    headers = getattr(self, u'CUSTOM_HEADERS', {})
    if conditional:
        if self.last_modified:
            headers[u'If-Modified-Since'] = self.last_modified
        elif self.etag:
            headers[u'If-None-Match'] = self.etag
    headers = (headers or None)
    json = self._json(self._get(self._api, headers=headers), 200)
    if (json is not None):
        self._json_data = json
        self._update_attributes(json)
    return self
