Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!
In [4]:
!pip install github_rest_api
Defaulting to user installation because normal site-packages is not writeable Collecting github_rest_api Downloading github_rest_api-0.24.0-py3-none-any.whl (10 kB) Requirement already satisfied: psutil>=5.9.4 in /usr/local/lib/python3.10/dist-packages (from github_rest_api) (5.9.5) Requirement already satisfied: requests>=2.28.2 in /usr/local/lib/python3.10/dist-packages (from github_rest_api) (2.30.0) Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.28.2->github_rest_api) (3.1.0) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.28.2->github_rest_api) (3.4) Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.28.2->github_rest_api) (2.0.2) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.28.2->github_rest_api) (2023.5.7) Installing collected packages: github_rest_api Successfully installed github_rest_api-0.24.0
In [5]:
from github_rest_api import Repository
In [5]:
repo = Repository(token="", owner="legendu-net", repo="icon")
repo
Out[5]:
<github_rest_api.github.Repository at 0x7fbeef605660>
In [6]:
repo.list_pull_requests()
Out[6]:
[{'url': 'https://api.github.com/repos/legendu-net/icon/pulls/70', 'id': 1298933949, 'node_id': 'PR_kwDOHkKAZc5NbCi9', 'html_url': 'https://github.com/legendu-net/icon/pull/70', 'diff_url': 'https://github.com/legendu-net/icon/pull/70.diff', 'patch_url': 'https://github.com/legendu-net/icon/pull/70.patch', 'issue_url': 'https://api.github.com/repos/legendu-net/icon/issues/70', 'number': 70, 'state': 'open', 'locked': False, 'title': 'Merge dev into main', 'user': {'login': 'dclong', 'id': 824507, 'node_id': 'MDQ6VXNlcjgyNDUwNw==', 'avatar_url': 'https://avatars.githubusercontent.com/u/824507?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dclong', 'html_url': 'https://github.com/dclong', 'followers_url': 'https://api.github.com/users/dclong/followers', 'following_url': 'https://api.github.com/users/dclong/following{/other_user}', 'gists_url': 'https://api.github.com/users/dclong/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dclong/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dclong/subscriptions', 'organizations_url': 'https://api.github.com/users/dclong/orgs', 'repos_url': 'https://api.github.com/users/dclong/repos', 'events_url': 'https://api.github.com/users/dclong/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dclong/received_events', 'type': 'User', 'site_admin': False}, 'body': 'Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action', 'created_at': '2023-04-01T23:54:25Z', 'updated_at': '2023-04-01T23:54:27Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '9df1331f63b4d76f2eff766b6417aece069be84e', 'assignee': {'login': 'dclong', 'id': 824507, 'node_id': 'MDQ6VXNlcjgyNDUwNw==', 'avatar_url': 'https://avatars.githubusercontent.com/u/824507?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dclong', 'html_url': 'https://github.com/dclong', 'followers_url': 'https://api.github.com/users/dclong/followers', 'following_url': 'https://api.github.com/users/dclong/following{/other_user}', 'gists_url': 'https://api.github.com/users/dclong/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dclong/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dclong/subscriptions', 'organizations_url': 'https://api.github.com/users/dclong/orgs', 'repos_url': 'https://api.github.com/users/dclong/repos', 'events_url': 'https://api.github.com/users/dclong/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dclong/received_events', 'type': 'User', 'site_admin': False}, 'assignees': [{'login': 'dclong', 'id': 824507, 'node_id': 'MDQ6VXNlcjgyNDUwNw==', 'avatar_url': 'https://avatars.githubusercontent.com/u/824507?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dclong', 'html_url': 'https://github.com/dclong', 'followers_url': 'https://api.github.com/users/dclong/followers', 'following_url': 'https://api.github.com/users/dclong/following{/other_user}', 'gists_url': 'https://api.github.com/users/dclong/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dclong/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dclong/subscriptions', 'organizations_url': 'https://api.github.com/users/dclong/orgs', 'repos_url': 'https://api.github.com/users/dclong/repos', 'events_url': 'https://api.github.com/users/dclong/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dclong/received_events', 'type': 'User', 'site_admin': False}], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/legendu-net/icon/pulls/70/commits', 'review_comments_url': 'https://api.github.com/repos/legendu-net/icon/pulls/70/comments', 'review_comment_url': 'https://api.github.com/repos/legendu-net/icon/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/legendu-net/icon/issues/70/comments', 'statuses_url': 'https://api.github.com/repos/legendu-net/icon/statuses/bc4f913ba57ee33bf6a855d88be92c49d69c9a57', 'head': {'label': 'legendu-net:dev', 'ref': 'dev', 'sha': 'bc4f913ba57ee33bf6a855d88be92c49d69c9a57', 'user': {'login': 'legendu-net', 'id': 104755004, 'node_id': 'O_kgDOBj5vPA', 'avatar_url': 'https://avatars.githubusercontent.com/u/104755004?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/legendu-net', 'html_url': 'https://github.com/legendu-net', 'followers_url': 'https://api.github.com/users/legendu-net/followers', 'following_url': 'https://api.github.com/users/legendu-net/following{/other_user}', 'gists_url': 'https://api.github.com/users/legendu-net/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/legendu-net/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/legendu-net/subscriptions', 'organizations_url': 'https://api.github.com/users/legendu-net/orgs', 'repos_url': 'https://api.github.com/users/legendu-net/repos', 'events_url': 'https://api.github.com/users/legendu-net/events{/privacy}', 'received_events_url': 'https://api.github.com/users/legendu-net/received_events', 'type': 'Organization', 'site_admin': False}, 'repo': {'id': 507674725, 'node_id': 'R_kgDOHkKAZQ', 'name': 'icon', 'full_name': 'legendu-net/icon', 'private': False, 'owner': {'login': 'legendu-net', 'id': 104755004, 'node_id': 'O_kgDOBj5vPA', 'avatar_url': 'https://avatars.githubusercontent.com/u/104755004?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/legendu-net', 'html_url': 'https://github.com/legendu-net', 'followers_url': 'https://api.github.com/users/legendu-net/followers', 'following_url': 'https://api.github.com/users/legendu-net/following{/other_user}', 'gists_url': 'https://api.github.com/users/legendu-net/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/legendu-net/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/legendu-net/subscriptions', 'organizations_url': 'https://api.github.com/users/legendu-net/orgs', 'repos_url': 'https://api.github.com/users/legendu-net/repos', 'events_url': 'https://api.github.com/users/legendu-net/events{/privacy}', 'received_events_url': 'https://api.github.com/users/legendu-net/received_events', 'type': 'Organization', 'site_admin': False}, 'html_url': 'https://github.com/legendu-net/icon', 'description': None, 'fork': False, 'url': 'https://api.github.com/repos/legendu-net/icon', 'forks_url': 'https://api.github.com/repos/legendu-net/icon/forks', 'keys_url': 'https://api.github.com/repos/legendu-net/icon/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/legendu-net/icon/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/legendu-net/icon/teams', 'hooks_url': 'https://api.github.com/repos/legendu-net/icon/hooks', 'issue_events_url': 'https://api.github.com/repos/legendu-net/icon/issues/events{/number}', 'events_url': 'https://api.github.com/repos/legendu-net/icon/events', 'assignees_url': 'https://api.github.com/repos/legendu-net/icon/assignees{/user}', 'branches_url': 'https://api.github.com/repos/legendu-net/icon/branches{/branch}', 'tags_url': 'https://api.github.com/repos/legendu-net/icon/tags', 'blobs_url': 'https://api.github.com/repos/legendu-net/icon/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/legendu-net/icon/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/legendu-net/icon/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/legendu-net/icon/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/legendu-net/icon/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/legendu-net/icon/languages', 'stargazers_url': 'https://api.github.com/repos/legendu-net/icon/stargazers', 'contributors_url': 'https://api.github.com/repos/legendu-net/icon/contributors', 'subscribers_url': 'https://api.github.com/repos/legendu-net/icon/subscribers', 'subscription_url': 'https://api.github.com/repos/legendu-net/icon/subscription', 'commits_url': 'https://api.github.com/repos/legendu-net/icon/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/legendu-net/icon/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/legendu-net/icon/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/legendu-net/icon/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/legendu-net/icon/contents/{+path}', 'compare_url': 'https://api.github.com/repos/legendu-net/icon/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/legendu-net/icon/merges', 'archive_url': 'https://api.github.com/repos/legendu-net/icon/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/legendu-net/icon/downloads', 'issues_url': 'https://api.github.com/repos/legendu-net/icon/issues{/number}', 'pulls_url': 'https://api.github.com/repos/legendu-net/icon/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/legendu-net/icon/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/legendu-net/icon/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/legendu-net/icon/labels{/name}', 'releases_url': 'https://api.github.com/repos/legendu-net/icon/releases{/id}', 'deployments_url': 'https://api.github.com/repos/legendu-net/icon/deployments', 'created_at': '2022-06-26T20:12:56Z', 'updated_at': '2023-01-31T19:59:33Z', 'pushed_at': '2023-04-01T23:54:26Z', 'git_url': 'git://github.com/legendu-net/icon.git', 'ssh_url': 'git@github.com:legendu-net/icon.git', 'clone_url': 'https://github.com/legendu-net/icon.git', 'svn_url': 'https://github.com/legendu-net/icon', 'homepage': None, 'size': 328, 'stargazers_count': 0, 'watchers_count': 0, 'language': 'Go', 'has_issues': True, 'has_projects': True, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 1, 'license': {'key': 'apache-2.0', 'name': 'Apache License 2.0', 'spdx_id': 'Apache-2.0', 'url': 'https://api.github.com/licenses/apache-2.0', 'node_id': 'MDc6TGljZW5zZTI='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'topics': [], 'visibility': 'public', 'forks': 0, 'open_issues': 1, 'watchers': 0, 'default_branch': 'dev'}}, 'base': {'label': 'legendu-net:main', 'ref': 'main', 'sha': 'b7fd126af582f4ab1fd8e4ca81b38d51c31e395a', 'user': {'login': 'legendu-net', 'id': 104755004, 'node_id': 'O_kgDOBj5vPA', 'avatar_url': 'https://avatars.githubusercontent.com/u/104755004?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/legendu-net', 'html_url': 'https://github.com/legendu-net', 'followers_url': 'https://api.github.com/users/legendu-net/followers', 'following_url': 'https://api.github.com/users/legendu-net/following{/other_user}', 'gists_url': 'https://api.github.com/users/legendu-net/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/legendu-net/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/legendu-net/subscriptions', 'organizations_url': 'https://api.github.com/users/legendu-net/orgs', 'repos_url': 'https://api.github.com/users/legendu-net/repos', 'events_url': 'https://api.github.com/users/legendu-net/events{/privacy}', 'received_events_url': 'https://api.github.com/users/legendu-net/received_events', 'type': 'Organization', 'site_admin': False}, 'repo': {'id': 507674725, 'node_id': 'R_kgDOHkKAZQ', 'name': 'icon', 'full_name': 'legendu-net/icon', 'private': False, 'owner': {'login': 'legendu-net', 'id': 104755004, 'node_id': 'O_kgDOBj5vPA', 'avatar_url': 'https://avatars.githubusercontent.com/u/104755004?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/legendu-net', 'html_url': 'https://github.com/legendu-net', 'followers_url': 'https://api.github.com/users/legendu-net/followers', 'following_url': 'https://api.github.com/users/legendu-net/following{/other_user}', 'gists_url': 'https://api.github.com/users/legendu-net/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/legendu-net/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/legendu-net/subscriptions', 'organizations_url': 'https://api.github.com/users/legendu-net/orgs', 'repos_url': 'https://api.github.com/users/legendu-net/repos', 'events_url': 'https://api.github.com/users/legendu-net/events{/privacy}', 'received_events_url': 'https://api.github.com/users/legendu-net/received_events', 'type': 'Organization', 'site_admin': False}, 'html_url': 'https://github.com/legendu-net/icon', 'description': None, 'fork': False, 'url': 'https://api.github.com/repos/legendu-net/icon', 'forks_url': 'https://api.github.com/repos/legendu-net/icon/forks', 'keys_url': 'https://api.github.com/repos/legendu-net/icon/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/legendu-net/icon/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/legendu-net/icon/teams', 'hooks_url': 'https://api.github.com/repos/legendu-net/icon/hooks', 'issue_events_url': 'https://api.github.com/repos/legendu-net/icon/issues/events{/number}', 'events_url': 'https://api.github.com/repos/legendu-net/icon/events', 'assignees_url': 'https://api.github.com/repos/legendu-net/icon/assignees{/user}', 'branches_url': 'https://api.github.com/repos/legendu-net/icon/branches{/branch}', 'tags_url': 'https://api.github.com/repos/legendu-net/icon/tags', 'blobs_url': 'https://api.github.com/repos/legendu-net/icon/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/legendu-net/icon/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/legendu-net/icon/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/legendu-net/icon/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/legendu-net/icon/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/legendu-net/icon/languages', 'stargazers_url': 'https://api.github.com/repos/legendu-net/icon/stargazers', 'contributors_url': 'https://api.github.com/repos/legendu-net/icon/contributors', 'subscribers_url': 'https://api.github.com/repos/legendu-net/icon/subscribers', 'subscription_url': 'https://api.github.com/repos/legendu-net/icon/subscription', 'commits_url': 'https://api.github.com/repos/legendu-net/icon/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/legendu-net/icon/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/legendu-net/icon/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/legendu-net/icon/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/legendu-net/icon/contents/{+path}', 'compare_url': 'https://api.github.com/repos/legendu-net/icon/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/legendu-net/icon/merges', 'archive_url': 'https://api.github.com/repos/legendu-net/icon/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/legendu-net/icon/downloads', 'issues_url': 'https://api.github.com/repos/legendu-net/icon/issues{/number}', 'pulls_url': 'https://api.github.com/repos/legendu-net/icon/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/legendu-net/icon/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/legendu-net/icon/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/legendu-net/icon/labels{/name}', 'releases_url': 'https://api.github.com/repos/legendu-net/icon/releases{/id}', 'deployments_url': 'https://api.github.com/repos/legendu-net/icon/deployments', 'created_at': '2022-06-26T20:12:56Z', 'updated_at': '2023-01-31T19:59:33Z', 'pushed_at': '2023-04-01T23:54:26Z', 'git_url': 'git://github.com/legendu-net/icon.git', 'ssh_url': 'git@github.com:legendu-net/icon.git', 'clone_url': 'https://github.com/legendu-net/icon.git', 'svn_url': 'https://github.com/legendu-net/icon', 'homepage': None, 'size': 328, 'stargazers_count': 0, 'watchers_count': 0, 'language': 'Go', 'has_issues': True, 'has_projects': True, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 1, 'license': {'key': 'apache-2.0', 'name': 'Apache License 2.0', 'spdx_id': 'Apache-2.0', 'url': 'https://api.github.com/licenses/apache-2.0', 'node_id': 'MDc6TGljZW5zZTI='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'topics': [], 'visibility': 'public', 'forks': 0, 'open_issues': 1, 'watchers': 0, 'default_branch': 'dev'}}, '_links': {'self': {'href': 'https://api.github.com/repos/legendu-net/icon/pulls/70'}, 'html': {'href': 'https://github.com/legendu-net/icon/pull/70'}, 'issue': {'href': 'https://api.github.com/repos/legendu-net/icon/issues/70'}, 'comments': {'href': 'https://api.github.com/repos/legendu-net/icon/issues/70/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/legendu-net/icon/pulls/70/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/legendu-net/icon/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/legendu-net/icon/pulls/70/commits'}, 'statuses': {'href': 'https://api.github.com/repos/legendu-net/icon/statuses/bc4f913ba57ee33bf6a855d88be92c49d69c9a57'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'active_lock_reason': None}]
In [9]:
files = repo.list_pull_request_files(70)
files
Out[9]:
[{'sha': 'ffd73f21bb3e23e6a3431e2891df05330da513f6', 'filename': 'utils/data/vscode/settings.json', 'status': 'modified', 'additions': 1, 'deletions': 0, 'changes': 1, 'blob_url': 'https://github.com/legendu-net/icon/blob/bc4f913ba57ee33bf6a855d88be92c49d69c9a57/utils%2Fdata%2Fvscode%2Fsettings.json', 'raw_url': 'https://github.com/legendu-net/icon/raw/bc4f913ba57ee33bf6a855d88be92c49d69c9a57/utils%2Fdata%2Fvscode%2Fsettings.json', 'contents_url': 'https://api.github.com/repos/legendu-net/icon/contents/utils%2Fdata%2Fvscode%2Fsettings.json?ref=bc4f913ba57ee33bf6a855d88be92c49d69c9a57', 'patch': '@@ -15,6 +15,7 @@\n ],\n "extensions.autoUpdate": false,\n "python.linting.mypyEnabled": false,\n+ "python.linting.pylintEnabled": true,\n "python.linting.pylintArgs": [\n "--extension-pkg-whitelist=numpy,cv2,pyspark",\n "--generated-members=cv2.*,pyspark.*",'}]
In [10]:
len(files)
Out[10]:
1
Add Comment to a PR¶
In [ ]:
repo.create_issue_comment(1596, "testing adding comment")