https
GET
api.github.com
None
/repos/PyGithub/PyGithub/issues?type=%2A
{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'}
None
200
[('Date', 'Fri, 19 Sep 2025 06:05:20 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"9af0e29c14b5147fd5c51a879a9475627bd6fdd6ea2343ccce1ab257e98be961"'), ('github-authentication-token-expiration', '2025-10-19 14:18:25 +0900'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-accepted-github-permissions', 'issues=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4906'), ('X-RateLimit-Reset', '1758262130'), ('X-RateLimit-Used', '94'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', 'F0B5:14DD7A:56ABA9:6C2F7E:68CCF2A0')]
[{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3379","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3379/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3379/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3379/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3379","id":3425963739,"node_id":"I_kwDOADYVqs7MNA7b","number":3379,"title":"Property `PaginatedList.totalCount` returns 0 when GitHub deprecation notices exists for API path","user":{"login":"odedperezcodes","id":232807103,"node_id":"U_kgDODeBavw","avatar_url":"https://avatars.githubusercontent.com/u/232807103?v=4","gravatar_id":"","url":"https://api.github.com/users/odedperezcodes","html_url":"https://github.com/odedperezcodes","followers_url":"https://api.github.com/users/odedperezcodes/followers","following_url":"https://api.github.com/users/odedperezcodes/following{/other_user}","gists_url":"https://api.github.com/users/odedperezcodes/gists{/gist_id}","starred_url":"https://api.github.com/users/odedperezcodes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odedperezcodes/subscriptions","organizations_url":"https://api.github.com/users/odedperezcodes/orgs","repos_url":"https://api.github.com/users/odedperezcodes/repos","events_url":"https://api.github.com/users/odedperezcodes/events{/privacy}","received_events_url":"https://api.github.com/users/odedperezcodes/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2025-09-17T11:53:11Z","updated_at":"2025-09-18T13:44:24Z","closed_at":null,"author_association":"NONE","type":{"id":1386163,"node_id":"IT_kwDOAKxBpM4AFSaz","name":"Bug","description":"An unexpected problem or behavior","color":"red","created_at":"2024-01-25T12:55:41Z","updated_at":"2024-07-26T10:24:51Z","is_enabled":true},"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"## Summary\n`search_issues().totalCount` incorrectly returns `0` instead of the actual count from GitHub API responses when GitHub includes deprecation notices in Link headers.\n\n## Environment\n- **PyGithub Version**: 2.8.1 (also affects 1.55 and likely all versions)\n- **Python Version**: 3.9.12\n- **GitHub API**: Enterprise GitHub (also affects github.com)\n\n## Problem Description\nSince GitHub started including deprecation notices in Link headers (around early September 2025), PyGithub's `search_issues()` method incorrectly returns `totalCount = 0` even when results exist.\n\n### Expected Behavior\n```python\nissues = gh.search_issues(\"commit:EXAMPLE_COMMIT_SHA\")\nprint(issues.totalCount)  # Should print: 1\n```\n\n### Actual Behavior\n```python\nissues = gh.search_issues(\"commit:EXAMPLE_COMMIT_SHA\")\nprint(issues.totalCount)  # Actually prints: 0\n```\n\n## Root Cause Analysis\n\n**File**: `github/PaginatedList.py`, lines 152-165\n\nThe bug occurs in the `totalCount` property getter:\n\n```python\nif \"link\" not in headers:  # Line 152 - ISSUE HERE\n    # This path would correctly use data[\"total_count\"]\n    if data and \"total_count\" in data:\n        self.__totalCount = data[\"total_count\"]  # Would work correctly\nelse:\n    # Takes this path due to deprecation Link header\n    links = self.__parseLinkHeader(headers)\n    lastUrl = links.get(\"last\")  # Returns None (no pagination links)\n    if lastUrl:\n        self.__totalCount = int(parse_qs(lastUrl)[\"page\"][0])\n    else:\n        self.__totalCount = 0  # BUG: Sets to 0 instead of using JSON total_count\n```\n\n**The Issue**: GitHub now includes deprecation notices in Link headers:\n```\nLink: <https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more/>; rel=\"deprecation\"; type=\"text/html\"\n```\n\nPyGithub incorrectly assumes any Link header means pagination exists, but deprecation notices are not pagination links.\n\n## Reproduction Steps\n\n1. Make any search that returns results:\n   ```bash\n   curl -H \"Authorization: token YOUR_TOKEN\" \\\n        \"https://api.github.com/search/issues?q=commit:EXAMPLE_COMMIT_SHA\"\n   ```\n   **Returns**: `{\"total_count\": 1, \"items\": [...]}`\n\n2. Use PyGithub:\n   ```python\n   import github\n   from github import Auth\n\n   auth = Auth.Token(\"YOUR_TOKEN\")\n   gh = github.Github(auth=auth)\n   issues = gh.search_issues(\"commit:EXAMPLE_COMMIT_SHA\")\n   print(f\"totalCount: {issues.totalCount}\")  # Prints 0 instead of 1\n   ```\n\n## Evidence\n\n**HTTP Response** (captured with debugging):\n```json\n{\n  \"total_count\": 1,\n  \"incomplete_results\": false,\n  \"items\": [{\"number\": 12345, \"title\": \"Example PR\", ...}]\n}\n```\n\n**Response Headers**:\n```\nLink: <https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more/>; rel=\"deprecation\"; type=\"text/html\"\n```\n\n**Parsed Links**: `{\"deprecation\": \"https://github.blog/changelog/...\"}`\n**Result**: No \"last\" link found → `totalCount = 0`\n\n## Proposed Fix\n\nChange line 152 in `PaginatedList.py` from:\n```python\nif \"link\" not in headers:\n```\n\nTo:\n```python\nif \"link\" not in headers or not self.__hasPaginationLinks(headers):\n```\n\nWhere `__hasPaginationLinks()` checks for pagination-specific `rel` values (`\"next\"`, `\"prev\"`, `\"last\"`, `\"first\"`), ignoring other Link types like deprecation notices.\n\nAlternative implementation:\n```python\ndef __hasPaginationLinks(self, headers):\n    \"\"\"Check if Link header contains pagination links, not just deprecation notices\"\"\"\n    if \"link\" not in headers:\n        return False\n\n    links = self.__parseLinkHeader(headers)\n    pagination_rels = {\"next\", \"prev\", \"last\", \"first\"}\n    return any(rel in pagination_rels for rel in links.keys())\n```\n\n## Impact\n\nThis bug affects:\n- All search operations (`search_issues`, `search_repositories`, `search_users`, etc.)\n- Any application relying on search result counts\n- Pagination logic when GitHub includes deprecation notices\n\n**Additional Context**: This issue started appearing around early September 2025 when GitHub began including deprecation notices in API responses, breaking existing PyGithub installations that were working fine before.\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3379/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3379/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3373","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3373/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3373/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3373/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3373","id":3399666591,"node_id":"I_kwDOADYVqs7Kosuf","number":3373,"title":"Broken links in documentation in 2.8","user":{"login":"skinitimski","id":418155,"node_id":"MDQ6VXNlcjQxODE1NQ==","avatar_url":"https://avatars.githubusercontent.com/u/418155?v=4","gravatar_id":"","url":"https://api.github.com/users/skinitimski","html_url":"https://github.com/skinitimski","followers_url":"https://api.github.com/users/skinitimski/followers","following_url":"https://api.github.com/users/skinitimski/following{/other_user}","gists_url":"https://api.github.com/users/skinitimski/gists{/gist_id}","starred_url":"https://api.github.com/users/skinitimski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/skinitimski/subscriptions","organizations_url":"https://api.github.com/users/skinitimski/orgs","repos_url":"https://api.github.com/users/skinitimski/repos","events_url":"https://api.github.com/users/skinitimski/events{/privacy}","received_events_url":"https://api.github.com/users/skinitimski/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2025-09-09T19:25:13Z","updated_at":"2025-09-09T20:29:51Z","closed_at":null,"author_association":"CONTRIBUTOR","type":{"id":1386163,"node_id":"IT_kwDOAKxBpM4AFSaz","name":"Bug","description":"An unexpected problem or behavior","color":"red","created_at":"2024-01-25T12:55:41Z","updated_at":"2024-07-26T10:24:51Z","is_enabled":true},"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"docs for 2.7.0 <https://pygithub.readthedocs.io/en/v2.7.0/apis.html>\ndocs for 2.8.0 <https://pygithub.readthedocs.io/en/v2.8.0/apis.html>\n\ngrep \"github.Repository.Repository.get_pulls()\"\n\nIn the 2.7.0 page, the grepped text links to the docs for the Repository object.\n\nIn the 2.8.0 page, there is no link.\n\nSimilarly, the [2.7.0 docs](https://pygithub.readthedocs.io/en/v2.7.0/github_objects/Repository.html#github.Repository.Repository.allow_auto_merge) have a lot to say about the members of Repository, but the [2.8.0 docs](https://pygithub.readthedocs.io/en/v2.8.0/github_objects/Repository.html) show no members at all.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3373/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3373/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3372","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3372/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3372/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3372/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3372","id":3398817538,"node_id":"I_kwDOADYVqs7KldcC","number":3372,"title":"Commit.files does not respect requester.per_page (in forward mode)","user":{"login":"iarspider","id":636602,"node_id":"MDQ6VXNlcjYzNjYwMg==","avatar_url":"https://avatars.githubusercontent.com/u/636602?v=4","gravatar_id":"","url":"https://api.github.com/users/iarspider","html_url":"https://github.com/iarspider","followers_url":"https://api.github.com/users/iarspider/followers","following_url":"https://api.github.com/users/iarspider/following{/other_user}","gists_url":"https://api.github.com/users/iarspider/gists{/gist_id}","starred_url":"https://api.github.com/users/iarspider/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iarspider/subscriptions","organizations_url":"https://api.github.com/users/iarspider/orgs","repos_url":"https://api.github.com/users/iarspider/repos","events_url":"https://api.github.com/users/iarspider/events{/privacy}","received_events_url":"https://api.github.com/users/iarspider/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2025-09-09T14:51:27Z","updated_at":"2025-09-17T19:49:40Z","closed_at":null,"author_association":"CONTRIBUTOR","type":{"id":1386163,"node_id":"IT_kwDOAKxBpM4AFSaz","name":"Bug","description":"An unexpected problem or behavior","color":"red","created_at":"2024-01-25T12:55:41Z","updated_at":"2024-07-26T10:24:51Z","is_enabled":true},"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"Minimal example:\n\n```\nimport logging\nfrom github import Github, Auth\ngh = Github(auth=Auth.Token($token), per_page=100)\ngh.requester._logger.setLevel(logging.DEBUG)\nrepo = gh.get_repo(\"iarspider-cmssw/cmssw\")\nissue = repo.get_issue(38)\npr = repo.get_pull(38)\ncommits = pr.get_commits()\ncommit = commits[0]\nfiles = list(commit.files)\nprint(len(files))\nfiles = list(reversed(commit.files))\nprint(len(files))\n```\n\nRunning this script and filtering the output with `grep '^GET' | awk '{print $1,$2}'`, I get this output:\n\n```\nGET https://api.github.com/repos/iarspider-cmssw/cmssw/pulls/38/commits?per_page=100\nGET https://api.github.com/repos/iarspider-cmssw/cmssw/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?page=2\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?page=3\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?page=4\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?page=5\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?page=6\nGET https://api.github.com/repos/iarspider-cmssw/cmssw/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=16\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=15\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=14\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=13\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=12\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=11\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=10\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=9\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=8\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=7\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=6\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=5\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=4\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=3\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=2\nGET https://api.github.com/repositories/399376380/commits/b6db3e643d2bd16deee12590d1312a3addcd2d75?per_page=100&page=1\n```\n\nNotice that forward iteration ignores per_page, but reverse respects it.\n\nThe [endpoint](https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28#get-a-commit) supports `per_page` parameter. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3372/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3372/timeline","performed_via_github_app":null,"state_reason":null}]

https
GET
api.github.com
None
/repos/PyGithub/PyGithub/issues?state=closed&type=%2A
{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'}
None
200
[('Date', 'Fri, 19 Sep 2025 06:05:21 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"e28e80892b441a543d962d2b1e7b3f7d06493b01b82fd0ab83d0a140642c57b9"'), ('github-authentication-token-expiration', '2025-10-19 14:18:25 +0900'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-accepted-github-permissions', 'issues=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4905'), ('X-RateLimit-Reset', '1758262130'), ('X-RateLimit-Used', '95'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', 'F675:2EAA45:502AB0:65AB37:68CCF2A0')]
[{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3364","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3364/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3364/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3364/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3364","id":3375750938,"node_id":"I_kwDOADYVqs7JNd8a","number":3364,"title":"IssueComment fails for bot users","user":{"login":"arash77","id":2973722,"node_id":"MDQ6VXNlcjI5NzM3MjI=","avatar_url":"https://avatars.githubusercontent.com/u/2973722?v=4","gravatar_id":"","url":"https://api.github.com/users/arash77","html_url":"https://github.com/arash77","followers_url":"https://api.github.com/users/arash77/followers","following_url":"https://api.github.com/users/arash77/following{/other_user}","gists_url":"https://api.github.com/users/arash77/gists{/gist_id}","starred_url":"https://api.github.com/users/arash77/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arash77/subscriptions","organizations_url":"https://api.github.com/users/arash77/orgs","repos_url":"https://api.github.com/users/arash77/repos","events_url":"https://api.github.com/users/arash77/events{/privacy}","received_events_url":"https://api.github.com/users/arash77/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":3330121,"node_id":"MDU6TGFiZWwzMzMwMTIx","url":"https://api.github.com/repos/PyGithub/PyGithub/labels/bug","name":"bug","color":"e10c02","default":true,"description":null}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2025-09-02T12:08:56Z","updated_at":"2025-09-02T17:30:49Z","closed_at":"2025-09-02T17:30:49Z","author_association":"CONTRIBUTOR","type":{"id":1386163,"node_id":"IT_kwDOAKxBpM4AFSaz","name":"Bug","description":"An unexpected problem or behavior","color":"red","created_at":"2024-01-25T12:55:41Z","updated_at":"2024-07-26T10:24:51Z","is_enabled":true},"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"**Description:**\n\nAfter upgrading PyGithub to 2.8.0, `IssueComment.user` is no longer deserialized for bot accounts. This causes `BadAttributeException` when trying to access the comment.\n\n**Repro:**\n```python\nfrom github import Github\n\ng = Github(\"token\")\nrepo = g.get_repo(\"owner/repo\")\npr = repo.get_pull(1234)\n\ncomments = pr.get_issue_comments()\nprint(comments[0])            # crashes if comment is from a bot\n```\n**Traceback:**\n```python\ngithub.GithubException.BadAttributeException: (\n  {'login': '...[bot]', 'type': 'Bot', ...},\n  <class 'type'>,\n  None\n)\n```","closed_by":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","user_view_type":"public","site_admin":false},"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3364/reactions","total_count":4,"+1":4,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3364/timeline","performed_via_github_app":null,"state_reason":"completed"},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3337","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3337/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3337/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3337/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3337","id":3326109475,"node_id":"I_kwDOADYVqs7GQGcj","number":3337,"title":"More sub-issues","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2025-08-15T19:20:14Z","updated_at":"2025-08-15T20:07:33Z","closed_at":"2025-08-15T20:07:33Z","author_association":"COLLABORATOR","type":{"id":1386160,"node_id":"IT_kwDOAKxBpM4AFSaw","name":"Task","description":"A specific piece of work","color":"yellow","created_at":"2024-01-25T12:55:41Z","updated_at":"2024-07-26T10:24:51Z","is_enabled":true},"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"parent_issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3335","issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":1,"blocking":0,"total_blocking":1},"body":null,"closed_by":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","user_view_type":"public","site_admin":false},"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3337/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3337/timeline","performed_via_github_app":null,"state_reason":"completed"},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3336","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3336/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3336/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3336/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3336","id":3326109065,"node_id":"I_kwDOADYVqs7GQGWJ","number":3336,"title":"Sub-issue","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2025-08-15T19:19:59Z","updated_at":"2025-08-15T20:07:22Z","closed_at":"2025-08-15T20:07:22Z","author_association":"COLLABORATOR","type":{"id":1386160,"node_id":"IT_kwDOAKxBpM4AFSaw","name":"Task","description":"A specific piece of work","color":"yellow","created_at":"2024-01-25T12:55:41Z","updated_at":"2024-07-26T10:24:51Z","is_enabled":true},"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"parent_issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3335","issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":1,"blocking":0,"total_blocking":1},"body":"To generate test data.\n\nBlocks #3337.","closed_by":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","user_view_type":"public","site_admin":false},"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3336/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3336/timeline","performed_via_github_app":null,"state_reason":"completed"},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3335","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3335/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3335/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3335/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3335","id":3326107606,"node_id":"I_kwDOADYVqs7GQF_W","number":3335,"title":"Issue with sub-issues","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2025-08-15T19:19:05Z","updated_at":"2025-08-15T20:07:09Z","closed_at":"2025-08-15T20:07:09Z","author_association":"COLLABORATOR","type":{"id":1386165,"node_id":"IT_kwDOAKxBpM4AFSa1","name":"Feature","description":"A request, idea, or new functionality","color":"blue","created_at":"2024-01-25T12:55:41Z","updated_at":"2024-10-08T09:21:54Z","is_enabled":true},"active_lock_reason":null,"sub_issues_summary":{"total":2,"completed":2,"percent_completed":100},"parent_issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/28","issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":null,"closed_by":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","user_view_type":"public","site_admin":false},"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3335/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3335/timeline","performed_via_github_app":null,"state_reason":"completed"},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/28","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/28/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/28/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/28/events","html_url":"https://github.com/PyGithub/PyGithub/issues/28","id":4653757,"node_id":"MDU6SXNzdWU0NjUzNzU3","number":28,"title":"Issue created by PyGithub","user":{"login":"jacquev6","id":327146,"node_id":"MDQ6VXNlcjMyNzE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/327146?v=4","gravatar_id":"","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":3330121,"node_id":"MDU6TGFiZWwzMzMwMTIx","url":"https://api.github.com/repos/PyGithub/PyGithub/labels/bug","name":"bug","color":"e10c02","default":true,"description":null},{"id":3376821,"node_id":"MDU6TGFiZWwzMzc2ODIx","url":"https://api.github.com/repos/PyGithub/PyGithub/labels/question","name":"question","color":"02e10c","default":true,"description":null}],"state":"closed","locked":false,"assignee":{"login":"jacquev6","id":327146,"node_id":"MDQ6VXNlcjMyNzE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/327146?v=4","gravatar_id":"","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User","user_view_type":"public","site_admin":false},"assignees":[{"login":"jacquev6","id":327146,"node_id":"MDQ6VXNlcjMyNzE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/327146?v=4","gravatar_id":"","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User","user_view_type":"public","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/PyGithub/PyGithub/milestones/8","html_url":"https://github.com/PyGithub/PyGithub/milestone/8","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones/8/labels","id":150933,"node_id":"MDk6TWlsZXN0b25lMTUwOTMz","number":8,"title":"Version 1.4","description":"","creator":{"login":"jacquev6","id":327146,"node_id":"MDQ6VXNlcjMyNzE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/327146?v=4","gravatar_id":"","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User","user_view_type":"public","site_admin":false},"open_issues":0,"closed_issues":3,"state":"closed","created_at":"2012-07-24T16:04:28Z","updated_at":"2012-09-11T18:52:13Z","due_on":"2012-08-05T07:00:00Z","closed_at":"2012-08-04T06:11:43Z"},"comments":3,"created_at":"2012-05-19T10:38:23Z","updated_at":"2025-08-15T19:35:40Z","closed_at":"2012-05-26T14:59:33Z","author_association":"MEMBER","type":{"id":1386163,"node_id":"IT_kwDOAKxBpM4AFSaz","name":"Bug","description":"An unexpected problem or behavior","color":"red","created_at":"2024-01-25T12:55:41Z","updated_at":"2024-07-26T10:24:51Z","is_enabled":true},"active_lock_reason":null,"sub_issues_summary":{"total":1,"completed":1,"percent_completed":100},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":1,"blocking":0,"total_blocking":1},"body":"Body edited by PyGithub\n","closed_by":{"login":"jacquev6","id":327146,"node_id":"MDQ6VXNlcjMyNzE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/327146?v=4","gravatar_id":"","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User","user_view_type":"public","site_admin":false},"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/28/reactions","total_count":2,"+1":0,"-1":0,"laugh":0,"hooray":2,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/28/timeline","performed_via_github_app":null,"state_reason":"completed"}]
