Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

No Comments returned for PullRequest #59

Closed
nixoz2k7 opened this Issue · 7 comments

3 participants

@nixoz2k7

Hello, here is the problem.
No Comments returned. But comments count showing proper value.

p = z.pulls[1]
p
OUTPUT:
OUTPUT: u'\u041d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c =)'
p.comments
OUTPUT: 1
p.get_comments()
OUTPUT:
list(p.get_comments())
OUTPUT: []

Any ideas ?

@jacquev6
Owner

Hello!

I confirm that the following code exhibits the same issue:

import github

g = github.Github()
r = g.get_user( "jacquev6" ).get_repo( "PyGithub" )
p = r.get_pull( 57 )
print p.title, "has", p.comments, "comments"
print [ c.body[ :15 ] for c in p.get_comments() ]

It prints:

Allows connection to GitHub Enterprise installs on local URLs has 2 comments
[]

This last line calls API https://api.github.com/repos/jacquev6/PyGithub/pulls/57/comments, as documented in http://developer.github.com/v3/pulls/comments/#list-comments-on-a-pull-request, but the API returns an empty list. I've just managed to get the comments by calling https://api.github.com/repos/jacquev6/PyGithub/issues/57/comments instead. The issue must be on Github's side.

As a temporary work-around, you can use the following code to do as if the pull request is an issue, and call the other API:

print [ c.body[ :15 ] for c in r.get_issue( p.number ).get_comments() ]

Right now, I have not enough time to take care of this problem, but if it's still here at the beginning of September, I will contact Github and/or patch PyGithub.

Enjoy,

@jacquev6 jacquev6 was assigned
@bilderbuchi

To enhance the workaround a bit, you can do this to determine if an issue is a PR or not (because all PRs are issues, too):

        if myIssue.pull_request.diff_url:
            PR=True
        else:
            PR=False
@nixoz2k7

Thank you! Will use this as a workaround.

@jacquev6
Owner

I've just contacted Github for this issue.

@jacquev6
Owner

And here is the reply I received from Github:

From: Wynn Netherland
Subject: API v3, list comments on pull requests

Hi, Vincent. I know it's confusing but we actually have three types of comments on GitHub, so there are
three different spots in the API to grab them. Be sure you're looking in the right spot for the data you expect.

Pull Request comments are the top-level comments found on the Pull Request page. These are retrieved via
the Issues API [1] since PRs are essentially specialized Issues. Pull Request review comments are those made
against the diff on the PR. You can grab these with the Review Comments API [2]. Finally, line comments made
outside the context of a PR on a raw commit can be retrieved via the Commit Comments API [3].

Armed with that info, let me know if you're not seeing the data you expect and the API call you're making, and I
can dig a bit deeper.

[1] http://developer.github.com/v3/issues/comments/
[2] http://developer.github.com/v3/pulls/comments/
[3] http://developer.github.com/v3/repos/comments/

Cheers,

So, this is coherent with what we can see here: #57, as PullRequest.get_comments uses the Pull Requests API. @nixoz2k7 Is it coherent with your original issue as well?

Anyway, this is misleading, so I will add two methods named get_issue_comments (using the Issues API) and get_review_comments (synonym for get_comments, using the Pull Requests API). Expect this for the middle of next week.

@jacquev6
Owner

I've just pushed the new methods on https://github.com/jacquev6/PyGithub/tree/develop. I close the issue because I feel it's solved. @nixoz2k7, do not hesitate to re-open it if you still have a problem with what has been said.

@jacquev6 jacquev6 closed this
@nixoz2k7

Thank you so much ;)
btw, it works great with "issues" workaround. stable for 2 weeks already.

Thank you again.
Sergey.

@nixoz2k7 nixoz2k7 added the v1 label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.