def get_commits(self, sha=github.GithubObject.NotSet, path=github.GithubObject.NotSet, since=github.GithubObject.NotSet, until=github.GithubObject.NotSet, author=github.GithubObject.NotSet):
assert sha is github.GithubObject.NotSet or isinstance(sha, (str, unicode)), sha<EOL>assert path is github.GithubObject.NotSet or isinstance(path, (str, unicode)), path<EOL>assert since is github.GithubObject.NotSet or isinstance(since, datetime.datetime), since<EOL>assert until is github.GithubObject.NotSet or isinstance(until, datetime.datetime), until<EOL>assert author is github.GithubObject.NotSet or isinstance(author, (str, unicode, github.NamedUser.NamedUser, github.AuthenticatedUser.AuthenticatedUser)), author<EOL>url_parameters = dict()<EOL>if sha is not github.GithubObject.NotSet:<EOL><INDENT>url_parameters["<STR_LIT>"] = sha<EOL><DEDENT>if path is not github.GithubObject.NotSet:<EOL><INDENT>url_parameters["<STR_LIT:path>"] = path<EOL><DEDENT>if since is not github.GithubObject.NotSet:<EOL><INDENT>url_parameters["<STR_LIT>"] = since.strftime("<STR_LIT>")<EOL><DEDENT>if until is not github.GithubObject.NotSet:<EOL><INDENT>url_parameters["<STR_LIT>"] = until.strftime("<STR_LIT>")<EOL><DEDENT>if author is not github.GithubObject.NotSet:<EOL><INDENT>if isinstance(author, (github.NamedUser.NamedUser, github.AuthenticatedUser.AuthenticatedUser)):<EOL><INDENT>url_parameters["<STR_LIT>"] = author.login<EOL><DEDENT>else:<EOL><INDENT>url_parameters["<STR_LIT>"] = author<EOL><DEDENT><DEDENT>return github.PaginatedList.PaginatedList(<EOL>github.Commit.Commit,<EOL>self._requester,<EOL>self.url + "<STR_LIT>",<EOL>url_parameters<EOL>)<EOL>
:calls: `GET /repos/:owner/:repo/commits <http://developer.github.com/v3/repos/commits>`_
:param sha: string
:param path: string
:param since: datetime.datetime
:param until: datetime.datetime
:param author: string or :class:`github.NamedUser.NamedUser` or :class:`github.AuthenticatedUser.AuthenticatedUser`
:rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Commit.Commit`