diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2ae85ec --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Recorded GitHub API responses, re-generated rather than edited by hand +tests/cassettes/** linguist-generated=true diff --git a/.github/workflows/live-api.yaml b/.github/workflows/live-api.yaml new file mode 100644 index 0000000..2ffe31c --- /dev/null +++ b/.github/workflows/live-api.yaml @@ -0,0 +1,35 @@ +# Run the test suite against the live GitHub API once a week, to catch +# changes on GitHub's side that the recorded cassettes can't show. +name: live-api + +on: + schedule: + # Mondays at 06:00 UTC + - cron: "0 6 * * 1" + workflow_dispatch: + +permissions: + contents: read + +jobs: + tests: + if: github.repository == 'executablebooks/github-activity' + runs-on: ubuntu-24.04 + env: + GITHUB_ACCESS_TOKEN: "${{ github.token }}" + # Identical requests are only sent once, so the run fits within the + # GITHUB_TOKEN rate limit, see tests/conftest.py + GITHUB_ACTIVITY_LIVE_TESTS: "1" + + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v7 + with: + python-version: "3.14" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e ".[testing]" + + - name: Run tests + run: pytest diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index e222104..686c546 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -41,15 +41,9 @@ jobs: tests: runs-on: ubuntu-24.04 - env: - GITHUB_ACCESS_TOKEN: "${{ github.token }}" strategy: - # max-parallel declared to reduce rate limitation issues - max-parallel: 1 matrix: include: - # Only test oldest supported and latest python version to reduce - # GitHub API calls, as they can get rate limited - python-version: 3.x - python-version: "3.10" @@ -63,8 +57,9 @@ jobs: python -m pip install --upgrade pip pip install -e ".[testing]" + # GitHub API responses are replayed from tests/cassettes/ - name: Run tests - run: pytest + run: pytest --block-network docs: runs-on: ubuntu-24.04 diff --git a/docs/contribute.md b/docs/contribute.md index 6369e32..b292932 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -11,6 +11,25 @@ This will install the local version of the package and run the test suite. nox -s test ``` +The tests don't call the GitHub API. +Instead they replay responses recorded with [`pytest-recording`](https://github.com/kiwicom/pytest-recording), which are stored in `tests/cassettes/`. + +If you change the requests github-activity makes, the tests will fail with `CannotOverwriteExistingCassetteException`. +Re-record the cassettes with a GitHub token (read-only access to public repositories is enough) and commit them: + +```bash +GITHUB_ACCESS_TOKEN=... nox -s test -- --record-mode=rewrite +``` + +Tokens are filtered out of the recordings. + +Because the cassettes can't show changes on GitHub's side, the `live-api` workflow also runs the tests against the real GitHub API once a week. +To do the same locally, run: + +```bash +GITHUB_ACCESS_TOKEN=... GITHUB_ACTIVITY_LIVE_TESTS=1 nox -s test +``` + ## Build the documentation The easiest way to build the documentation locally is using `nox`. diff --git a/github_activity/cli.py b/github_activity/cli.py index 5f3c5dd..a566d3d 100644 --- a/github_activity/cli.py +++ b/github_activity/cli.py @@ -171,12 +171,12 @@ def load_config_and_defaults(args): setattr(args, argname, config.get(configname, ARG_DEFAULTS.get(configname))) -def main(): +def main(argv=None): if not _git_installed_check(): print("git is required to run github-activity", file=sys.stderr) sys.exit(1) - args = parser.parse_args() + args = parser.parse_args(argv) if args.target and args._target: raise ValueError( "target cannot be passed as both a positional and keyword argument" diff --git a/github_activity/github_activity.py b/github_activity/github_activity.py index d9edbfa..2cb40ef 100644 --- a/github_activity/github_activity.py +++ b/github_activity/github_activity.py @@ -212,25 +212,29 @@ def get_activity( since_dt_str = f"{since_dt:%Y-%m-%dT%H:%M:%SZ}" until_dt_str = f"{until_dt:%Y-%m-%dT%H:%M:%SZ}" + # GitHub App requests using user access tokens return no nodes for mixed + # issue/PR searches, so we search for each kind separately. + kinds = ["issue", "pr"] if kind: - allowed_kinds = ["issue", "pr"] - if kind not in allowed_kinds: - raise ValueError(f"Kind must be one of {allowed_kinds}, got {kind}") - search_query += f" type:{kind}" + if kind not in kinds: + raise ValueError(f"Kind must be one of {kinds}, got {kind}") + kinds = [kind] # Query for both opened and closed issues/PRs in this window print(f"Running search query:\n{search_query}\n\n", file=sys.stderr) query_data = [] all_bot_users = set() for activity_type in ["created", "closed"]: - ii_search_query = ( - search_query + f" {activity_type}:{since_dt_str}..{until_dt_str}" - ) - qu = GitHubGraphQlQuery(ii_search_query, auth=auth) - qu.request() - query_data.append(qu.data) - # Collect bot users from each query - all_bot_users.update(qu.data.attrs.get("bot_users", set())) + for ii_kind in kinds: + ii_search_query = ( + search_query + + f" type:{ii_kind} {activity_type}:{since_dt_str}..{until_dt_str}" + ) + qu = GitHubGraphQlQuery(ii_search_query, auth=auth) + qu.request() + query_data.append(qu.data) + # Collect bot users from each query + all_bot_users.update(qu.data.attrs.get("bot_users", set())) query_data = ( pd.concat(query_data).drop_duplicates(subset=["id"]).reset_index(drop=True) diff --git a/github_activity/graphql.py b/github_activity/graphql.py index a3dd7f3..245d672 100644 --- a/github_activity/graphql.py +++ b/github_activity/graphql.py @@ -322,6 +322,11 @@ def is_bot(user_dict): self.data = pd.DataFrame(self.issues_and_or_prs) self.data.attrs["bot_users"] = bot_users + # Issues don't have the PR only fields, so make sure the columns always exist + for column in ["mergedBy", "mergeCommit", "baseRefName", "reviews", "commits"]: + if column not in self.data: + self.data[column] = None + # Add some extra fields def get_login(user): return user["login"] if pd.notna(user) else user diff --git a/pyproject.toml b/pyproject.toml index 1add150..5e3ea69 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,7 @@ Source = "https://github.com/executablebooks/github-activity" testing = [ "pytest", "pytest-cov", + "pytest-recording", "pytest-regressions", ] sphinx = [ diff --git a/tests/cassettes/test_cli/test_changelog_features.yaml b/tests/cassettes/test_cli/test_changelog_features.yaml new file mode 100644 index 0000000..a7c3d0f --- /dev/null +++ b/tests/cassettes/test_cli/test_changelog_features.yaml @@ -0,0 +1,689 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: HEAD + uri: https://api.github.com/repos/executablebooks/github-activity + response: + body: + string: '' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:02 GMT + ETag: + - W/"a3d17a6aecba37ebbcb1fc08712cc37d8db7039f6311f9374639af62bf04dcf3" + Last-Modified: + - Tue, 15 Sep 2026 21:15:16 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - ECDE:3694C9:2AEBAD:8E8D08:6AA9B862 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4955' + X-RateLimit-Reset: + - '1789510186' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '45' + X-XSS-Protection: + - '0' + content-length: + - '0' + x-accepted-github-permissions: + - metadata=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/v1.0.2 + response: + body: + string: '{"sha":"333712d1e6f70e1d79a8b7a51884fb301522c64d","node_id":"C_kwDODJbnsNoAKDMzMzcxMmQxZTZmNzBlMWQ3OWE4YjdhNTE4ODRmYjMwMTUyMmM2NGQ","commit":{"author":{"name":"Erik + Sundell","email":"erik.i.sundell@gmail.com","date":"2025-04-11T22:23:28Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2025-04-11T22:23:28Z"},"message":"Merge + pull request #117 from consideRatio/pr/cl102\n\nAdd changelog for v1.0.2","tree":{"sha":"fe306160c6e93a6cb778a2fdf68c7508f8dd3375","url":"https://api.github.com/repos/executablebooks/github-activity/git/trees/fe306160c6e93a6cb778a2fdf68c7508f8dd3375"},"url":"https://api.github.com/repos/executablebooks/github-activity/git/commits/333712d1e6f70e1d79a8b7a51884fb301522c64d","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN + PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJn+ZZgCRC1aQ7uu5UhlAAA5ucQAFdf9w0Nj+SCXLcBvzQjitNN\nGzoQwT/SHcsFjx7+TFy20WQz5eLDmnKHT8H41IV7+c588U4w8OhOXhJKMuA1dnfP\ndPfswo9X1dQWjk2cnFf053U71kwTxbGZAXQBW3Ct3pcE1bG1GGCigJHnsKVLNB05\nQp4QkTIZ6X7bJ92nra4Ju2UVvTaAnyZIvmVcULhkKT6voTCEU5qA2eo9115JDXLM\nGOG/X+U+MwDLthyKicIAqrk+CjquYsjBrXuvdPMrxoHHu1HMAofyVXFe3GzMU8Vw\nRl/p+GvMeHswvie0wGfy44FMfag1/f3VNP3jZpwaV8s4W4XeMWG9SNRr1m/kGgrB\n3lVl4lz3dDTY+uuK0/WoYUuwBPWQpujIeXiVFYO1wLDKvHDYO26ZB/Lq+WECXVVO\nDq7Lpv+wV1namq+kAno5qAtgr5ba7zvgyhiqPC2c1/2TIcy6kJnEeQmiFwWghmkE\nZ1B7VoQiCU1ebCAgQFfL2fX5WgIAe8PGCAsg873pHFHGu16xF2Mo8mUC00b6ojZ0\nifizhAHZkHSwdl3xt7pInQielMy64UDEn7Y3k6imHJqX6R6ZZqdvFSzUZPHRCeUh\nXzrEf/OBBJbHtcOJzvCGqNGTcekFnbDgBPp9OYlQlWeGAG4HsAf7nJS8xVOJ6BX1\nlKSoOnoY1TsHIxWr6ZKA\n=sU4t\n-----END + PGP SIGNATURE-----\n","payload":"tree fe306160c6e93a6cb778a2fdf68c7508f8dd3375\nparent + 37cd1da9cbf045bec91adb2ce256e6d728b16468\nparent 3f3827f5892931f7b4b8facc2a8fabad21c6ac40\nauthor + Erik Sundell 1744410208 +0200\ncommitter GitHub + 1744410208 +0200\n\nMerge pull request #117 from consideRatio/pr/cl102\n\nAdd + changelog for v1.0.2","verified_at":"2025-04-11T22:24:03Z"}},"url":"https://api.github.com/repos/executablebooks/github-activity/commits/333712d1e6f70e1d79a8b7a51884fb301522c64d","html_url":"https://github.com/executablebooks/github-activity/commit/333712d1e6f70e1d79a8b7a51884fb301522c64d","comments_url":"https://api.github.com/repos/executablebooks/github-activity/commits/333712d1e6f70e1d79a8b7a51884fb301522c64d/comments","author":{"login":"consideRatio","id":3837114,"node_id":"MDQ6VXNlcjM4MzcxMTQ=","avatar_url":"https://avatars.githubusercontent.com/u/3837114?v=4","gravatar_id":"","url":"https://api.github.com/users/consideRatio","html_url":"https://github.com/consideRatio","followers_url":"https://api.github.com/users/consideRatio/followers","following_url":"https://api.github.com/users/consideRatio/following{/other_user}","gists_url":"https://api.github.com/users/consideRatio/gists{/gist_id}","starred_url":"https://api.github.com/users/consideRatio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/consideRatio/subscriptions","organizations_url":"https://api.github.com/users/consideRatio/orgs","repos_url":"https://api.github.com/users/consideRatio/repos","events_url":"https://api.github.com/users/consideRatio/events{/privacy}","received_events_url":"https://api.github.com/users/consideRatio/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"37cd1da9cbf045bec91adb2ce256e6d728b16468","url":"https://api.github.com/repos/executablebooks/github-activity/commits/37cd1da9cbf045bec91adb2ce256e6d728b16468","html_url":"https://github.com/executablebooks/github-activity/commit/37cd1da9cbf045bec91adb2ce256e6d728b16468"},{"sha":"3f3827f5892931f7b4b8facc2a8fabad21c6ac40","url":"https://api.github.com/repos/executablebooks/github-activity/commits/3f3827f5892931f7b4b8facc2a8fabad21c6ac40","html_url":"https://github.com/executablebooks/github-activity/commit/3f3827f5892931f7b4b8facc2a8fabad21c6ac40"}],"stats":{"total":8,"additions":7,"deletions":1},"files":[{"sha":"0461e78258cb68ed02947ec4da4b88848040ee9d","filename":"CHANGELOG.md","status":"modified","additions":7,"deletions":1,"changes":8,"blob_url":"https://github.com/executablebooks/github-activity/blob/333712d1e6f70e1d79a8b7a51884fb301522c64d/CHANGELOG.md","raw_url":"https://github.com/executablebooks/github-activity/raw/333712d1e6f70e1d79a8b7a51884fb301522c64d/CHANGELOG.md","contents_url":"https://api.github.com/repos/executablebooks/github-activity/contents/CHANGELOG.md?ref=333712d1e6f70e1d79a8b7a51884fb301522c64d","patch":"@@ + -1,8 +1,14 @@\n # Changelog\n \n+## v1.0.2 - 2025-04-12\n+\n+### Continuous + integration improvements\n+\n+- Fix another issue in the publish workflow + [#116](https://github.com/executablebooks/github-activity/pull/116) ([@consideRatio](https://github.com/consideRatio))\n+\n + ## v1.0.1 - 2025-04-11\n \n-### Maintenance and upkeep improvements\n+### + Continuous integration improvements\n \n - Fix publish workflow failure [#114](https://github.com/executablebooks/github-activity/pull/114) + ([@consideRatio](https://github.com/consideRatio))\n "}]}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:03 GMT + ETag: + - W/"4981c233c08c24be62c967f8a020932dbbf595172c14e2b85538c9551f451356" + Last-Modified: + - Fri, 11 Apr 2025 22:23:28 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 3740:19F0BD:1426ACD:4266776:6AA9B863 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4871' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '129' + X-XSS-Protection: + - '0' + content-length: + - '6031' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/v1.1.0 + response: + body: + string: '{"sha":"f034c969420430c63c00d9358d540728d2406e22","node_id":"C_kwDODJbnsNoAKGYwMzRjOTY5NDIwNDMwYzYzYzAwZDkzNThkNTQwNzI4ZDI0MDZlMjI","commit":{"author":{"name":"choldgraf","email":"choldgraf@gmail.com","date":"2025-12-09T16:50:50Z"},"committer":{"name":"choldgraf","email":"choldgraf@gmail.com","date":"2025-12-09T16:50:50Z"},"message":"Bump + to 1.1.0","tree":{"sha":"ef996b4d598a24e2d65e448df15a268710ed0a47","url":"https://api.github.com/repos/executablebooks/github-activity/git/trees/ef996b4d598a24e2d65e448df15a268710ed0a47"},"url":"https://api.github.com/repos/executablebooks/github-activity/git/commits/f034c969420430c63c00d9358d540728d2406e22","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null,"verified_at":null}},"url":"https://api.github.com/repos/executablebooks/github-activity/commits/f034c969420430c63c00d9358d540728d2406e22","html_url":"https://github.com/executablebooks/github-activity/commit/f034c969420430c63c00d9358d540728d2406e22","comments_url":"https://api.github.com/repos/executablebooks/github-activity/commits/f034c969420430c63c00d9358d540728d2406e22/comments","author":{"login":"choldgraf","id":1839645,"node_id":"MDQ6VXNlcjE4Mzk2NDU=","avatar_url":"https://avatars.githubusercontent.com/u/1839645?v=4","gravatar_id":"","url":"https://api.github.com/users/choldgraf","html_url":"https://github.com/choldgraf","followers_url":"https://api.github.com/users/choldgraf/followers","following_url":"https://api.github.com/users/choldgraf/following{/other_user}","gists_url":"https://api.github.com/users/choldgraf/gists{/gist_id}","starred_url":"https://api.github.com/users/choldgraf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/choldgraf/subscriptions","organizations_url":"https://api.github.com/users/choldgraf/orgs","repos_url":"https://api.github.com/users/choldgraf/repos","events_url":"https://api.github.com/users/choldgraf/events{/privacy}","received_events_url":"https://api.github.com/users/choldgraf/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"choldgraf","id":1839645,"node_id":"MDQ6VXNlcjE4Mzk2NDU=","avatar_url":"https://avatars.githubusercontent.com/u/1839645?v=4","gravatar_id":"","url":"https://api.github.com/users/choldgraf","html_url":"https://github.com/choldgraf","followers_url":"https://api.github.com/users/choldgraf/followers","following_url":"https://api.github.com/users/choldgraf/following{/other_user}","gists_url":"https://api.github.com/users/choldgraf/gists{/gist_id}","starred_url":"https://api.github.com/users/choldgraf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/choldgraf/subscriptions","organizations_url":"https://api.github.com/users/choldgraf/orgs","repos_url":"https://api.github.com/users/choldgraf/repos","events_url":"https://api.github.com/users/choldgraf/events{/privacy}","received_events_url":"https://api.github.com/users/choldgraf/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"c607ec8d102816349a68204840a7c3165a71de24","url":"https://api.github.com/repos/executablebooks/github-activity/commits/c607ec8d102816349a68204840a7c3165a71de24","html_url":"https://github.com/executablebooks/github-activity/commit/c607ec8d102816349a68204840a7c3165a71de24"}],"stats":{"total":6,"additions":3,"deletions":3},"files":[{"sha":"e914d18c7b21e9225322cf4cd70e02f4a7493a51","filename":"github_activity/__init__.py","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/executablebooks/github-activity/blob/f034c969420430c63c00d9358d540728d2406e22/github_activity%2F__init__.py","raw_url":"https://github.com/executablebooks/github-activity/raw/f034c969420430c63c00d9358d540728d2406e22/github_activity%2F__init__.py","contents_url":"https://api.github.com/repos/executablebooks/github-activity/contents/github_activity%2F__init__.py?ref=f034c969420430c63c00d9358d540728d2406e22","patch":"@@ + -1,4 +1,4 @@\n-__version__ = \"1.0.3\"\n+__version__ = \"1.1.0\"\n __all__ + = [\"get_activity\", \"generate_activity_md\"]\n \n from .github_activity + import get_activity, generate_activity_md"},{"sha":"6c2cb84d876e0852784b7f3c4b72d2a643173d05","filename":"pyproject.toml","status":"modified","additions":2,"deletions":2,"changes":4,"blob_url":"https://github.com/executablebooks/github-activity/blob/f034c969420430c63c00d9358d540728d2406e22/pyproject.toml","raw_url":"https://github.com/executablebooks/github-activity/raw/f034c969420430c63c00d9358d540728d2406e22/pyproject.toml","contents_url":"https://api.github.com/repos/executablebooks/github-activity/contents/pyproject.toml?ref=f034c969420430c63c00d9358d540728d2406e22","patch":"@@ + -6,7 +6,7 @@ build-backend = \"setuptools.build_meta\"\n name = \"github_activity\"\n + description = \"Grab recent issue/PR activity from a GitHub repository and + render it as markdown.\"\n # update verison with `tbump NEW_VERSION`\n-version + = \"1.0.3\"\n+version = \"1.1.0\"\n dynamic = [\"readme\", \"dependencies\"]\n + requires-python = \">=3.9\"\n keywords = [\"Development\", \"Changelog\"]\n@@ + -57,7 +57,7 @@ fallback_version = \"0.0.0\"\n github_url = \"https://github.com/executablebooks/github-activity\"\n + \n [tool.tbump.version]\n-current = \"1.0.3\"\n+current = \"1.1.0\"\n \n regex + = ''''''\n (?P\\d+)"}]}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:04 GMT + ETag: + - W/"10dc13897da26de88f92239d35e8d02438088ef89d94a40759a753f40023ff13" + Last-Modified: + - Tue, 09 Dec 2025 16:50:50 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 7A77:29CC8E:D5C6F3:2C5E0C3:6AA9B863 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4870' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '130' + X-XSS-Protection: + - '0' + content-length: + - '5362' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue created:2025-04-11T22:23:28Z..2025-12-09T16:50:50Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2841' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":9,"pageInfo":{"endCursor":"Y3Vyc29yOjk=","hasNextPage":false},"nodes":[{"state":"CLOSED","id":"I_kwDODJbnsM7dPNiy","title":"Chris + is making a release even though tests are failing because they pass locally","url":"https://github.com/executablebooks/github-activity/issues/148","createdAt":"2025-12-09T16:41:56Z","updatedAt":"2025-12-09T17:01:09Z","closedAt":"2025-12-09T16:43:43Z","labels":{"edges":[]},"number":148,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-09T16:43:37Z","updatedAt":"2025-12-09T16:43:37Z","url":"https://github.com/executablebooks/github-activity/issues/148#issuecomment-3633217170","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"CONTRIBUTOR","createdAt":"2025-12-09T17:01:09Z","updatedAt":"2025-12-09T17:01:09Z","url":"https://github.com/executablebooks/github-activity/issues/148#issuecomment-3633300130","author":{"login":"jtpio","__typename":"User"}}}]}},{"state":"CLOSED","id":"I_kwDODJbnsM7cB2vs","title":"Use + GraphQL API to differentiate bot vs. human PR authors instead of hard-coding + names","url":"https://github.com/executablebooks/github-activity/issues/145","createdAt":"2025-12-03T18:49:51Z","updatedAt":"2025-12-04T02:03:46Z","closedAt":"2025-12-04T02:03:46Z","labels":{"edges":[]},"number":145,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-12-03T19:54:03Z","updatedAt":"2025-12-03T19:54:03Z","url":"https://github.com/executablebooks/github-activity/issues/145#issuecomment-3608586930","author":{"login":"stefanv","__typename":"User"}}}]}},{"state":"OPEN","id":"I_kwDODJbnsM7ZyAM_","title":"Feature + request: Include stats for new contributors in generated changelog","url":"https://github.com/executablebooks/github-activity/issues/142","createdAt":"2025-11-22T03:24:23Z","updatedAt":"2025-11-22T03:24:23Z","closedAt":null,"labels":{"edges":[{"node":{"name":"enhancement"}}]},"number":142,"authorAssociation":"NONE","author":{"login":"RRosio","__typename":"User"},"reactions":{"totalCount":3},"comments":{"edges":[]}},{"state":"CLOSED","id":"I_kwDODJbnsM7KbutX","title":"BUG: + List of contributors is incorrect","url":"https://github.com/executablebooks/github-activity/issues/131","createdAt":"2025-09-09T02:00:12Z","updatedAt":"2026-01-20T18:28:53Z","closedAt":"2026-01-20T18:28:53Z","labels":{"edges":[{"node":{"name":"bug"}}]},"number":131,"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-09-25T17:37:00Z","updatedAt":"2025-09-25T17:37:00Z","url":"https://github.com/executablebooks/github-activity/issues/131#issuecomment-3335208041","author":{"login":"minrk","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-09-25T17:39:30Z","updatedAt":"2025-09-25T17:39:30Z","url":"https://github.com/executablebooks/github-activity/issues/131#issuecomment-3335215627","author":{"login":"minrk","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-25T17:47:15Z","updatedAt":"2025-09-25T17:47:15Z","url":"https://github.com/executablebooks/github-activity/issues/131#issuecomment-3335238754","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2026-01-20T18:28:53Z","updatedAt":"2026-01-20T18:28:53Z","url":"https://github.com/executablebooks/github-activity/issues/131#issuecomment-3774346251","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"OPEN","id":"I_kwDODJbnsM7B-MbZ","title":"Create + a re-usable GitHub Workflow to publish releases attached to a tag using this + tool","url":"https://github.com/executablebooks/github-activity/issues/129","createdAt":"2025-07-22T23:01:54Z","updatedAt":"2025-07-22T23:01:54Z","closedAt":null,"labels":{"edges":[]},"number":129,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":1},"comments":{"edges":[]}},{"state":"CLOSED","id":"I_kwDODJbnsM66Y8Oc","title":"Add + a \"reviewed by\" to each item in the changelog report, listing each reviewer + of a merged PR","url":"https://github.com/executablebooks/github-activity/issues/126","createdAt":"2025-06-07T14:44:19Z","updatedAt":"2025-06-09T16:19:27Z","closedAt":"2025-06-09T16:19:27Z","labels":{"edges":[{"node":{"name":"documentation"}}]},"number":126,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"CONTRIBUTOR","createdAt":"2025-06-07T14:52:58Z","updatedAt":"2025-06-07T14:52:58Z","url":"https://github.com/executablebooks/github-activity/issues/126#issuecomment-2952599145","author":{"login":"manics","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-06-07T15:12:09Z","updatedAt":"2025-06-07T15:12:09Z","url":"https://github.com/executablebooks/github-activity/issues/126#issuecomment-2952637522","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-06-07T16:17:54Z","updatedAt":"2025-06-07T16:18:28Z","url":"https://github.com/executablebooks/github-activity/issues/126#issuecomment-2952722410","author":{"login":"choldgraf","__typename":"User"}}}]}},{"state":"CLOSED","id":"I_kwDODJbnsM63ShIM","title":"Detect + the date of the latest github release rather than the last tag","url":"https://github.com/executablebooks/github-activity/issues/124","createdAt":"2025-05-19T21:41:33Z","updatedAt":"2025-06-07T15:58:10Z","closedAt":"2025-06-07T15:58:10Z","labels":{"edges":[{"node":{"name":"enhancement"}}]},"number":124,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[]}},{"state":"OPEN","id":"I_kwDODJbnsM62d6qW","title":"Find + a new home for this repository","url":"https://github.com/executablebooks/github-activity/issues/123","createdAt":"2025-05-13T21:39:39Z","updatedAt":"2025-05-13T21:39:39Z","closedAt":null,"labels":{"edges":[]},"number":123,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":1},"comments":{"edges":[]}},{"state":"CLOSED","id":"I_kwDODJbnsM6yX_pA","title":"\"how + we define contributors\" link in output no longer resolves","url":"https://github.com/executablebooks/github-activity/issues/121","createdAt":"2025-04-14T10:31:25Z","updatedAt":"2025-04-14T13:04:23Z","closedAt":"2025-04-14T13:04:21Z","labels":{"edges":[{"node":{"name":"bug"}}]},"number":121,"authorAssociation":"COLLABORATOR","author":{"login":"minrk","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-04-14T11:53:19Z","updatedAt":"2025-04-14T11:53:19Z","url":"https://github.com/executablebooks/github-activity/issues/121#issuecomment-2801459164","author":{"login":"consideRatio","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-04-14T12:49:53Z","updatedAt":"2025-04-14T12:49:53Z","url":"https://github.com/executablebooks/github-activity/issues/121#issuecomment-2801607887","author":{"login":"minrk","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-04-14T13:04:21Z","updatedAt":"2025-04-14T13:04:21Z","url":"https://github.com/executablebooks/github-activity/issues/121#issuecomment-2801648616","author":{"login":"consideRatio","__typename":"User"}}}]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:04 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 93EC:201AE0:DA0333:2D220C5:6AA9B864 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '1762' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '3238' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr created:2025-04-11T22:23:28Z..2025-12-09T16:50:50Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2838' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":23,"pageInfo":{"endCursor":"Y3Vyc29yOjIz","hasNextPage":false},"nodes":[{"state":"MERGED","id":"PR_kwDODJbnsM639glW","title":"RLS: + v1.1.0","url":"https://github.com/executablebooks/github-activity/pull/149","createdAt":"2025-12-09T16:43:03Z","updatedAt":"2025-12-09T16:43:42Z","closedAt":"2025-12-09T16:43:42Z","labels":{"edges":[]},"number":149,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"3058c1286a037645e988492779f8ac5f5cfb4632"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM63A9n3","title":"Add + `pytz` to requirements","url":"https://github.com/executablebooks/github-activity/pull/147","createdAt":"2025-12-04T09:27:46Z","updatedAt":"2025-12-04T16:37:14Z","closedAt":"2025-12-04T16:33:42Z","labels":{"edges":[{"node":{"name":"bug"}}]},"number":147,"authorAssociation":"CONTRIBUTOR","author":{"login":"jtpio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"3ffc68f920474d500c7150bde975e86c591a3184"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"CONTRIBUTOR","createdAt":"2025-12-04T09:43:08Z","updatedAt":"2025-12-04T09:43:08Z","url":"https://github.com/executablebooks/github-activity/pull/147#issuecomment-3611138982","author":{"login":"jtpio","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-04T16:37:14Z","updatedAt":"2025-12-04T16:37:14Z","url":"https://github.com/executablebooks/github-activity/pull/147#issuecomment-3613138180","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"jtpio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"nabobalis","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM626xrM","title":"Use + GraphQL API for bot detection","url":"https://github.com/executablebooks/github-activity/pull/146","createdAt":"2025-12-03T20:41:25Z","updatedAt":"2025-12-04T02:03:50Z","closedAt":"2025-12-04T02:03:45Z","labels":{"edges":[]},"number":146,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"stefanv","__typename":"User"},"mergeCommit":{"oid":"7e3a545345a2703bf79a90f7c7b90eb0e3611046"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-03T20:44:16Z","updatedAt":"2025-12-03T20:44:16Z","url":"https://github.com/executablebooks/github-activity/pull/146#issuecomment-3608767494","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-03T22:39:00Z","updatedAt":"2025-12-03T22:39:00Z","url":"https://github.com/executablebooks/github-activity/pull/146#issuecomment-3609145696","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-12-04T02:03:50Z","updatedAt":"2025-12-04T02:03:50Z","url":"https://github.com/executablebooks/github-activity/pull/146#issuecomment-3609643972","author":{"login":"stefanv","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM62bGEx","title":"Update + test suite to use fewer GitHub API calls","url":"https://github.com/executablebooks/github-activity/pull/144","createdAt":"2025-12-01T19:06:38Z","updatedAt":"2025-12-03T19:13:22Z","closedAt":"2025-12-03T19:13:22Z","labels":{"edges":[]},"number":144,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"89a921b5a21618841666799318349ec863b81448"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-12-01T19:40:16Z","updatedAt":"2025-12-01T19:40:16Z","url":"https://github.com/executablebooks/github-activity/pull/144#issuecomment-3598536455","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-01T22:24:33Z","updatedAt":"2025-12-01T22:24:33Z","url":"https://github.com/executablebooks/github-activity/pull/144#issuecomment-3599221851","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-03T19:13:17Z","updatedAt":"2025-12-03T19:13:17Z","url":"https://github.com/executablebooks/github-activity/pull/144#issuecomment-3608420986","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM62QfzK","title":"Bump + actions/checkout from 5 to 6 in the actions group","url":"https://github.com/executablebooks/github-activity/pull/143","createdAt":"2025-12-01T05:42:08Z","updatedAt":"2025-12-01T14:39:18Z","closedAt":"2025-12-01T14:39:10Z","labels":{"edges":[{"node":{"name":"dependencies"}},{"node":{"name":"github_actions"}}]},"number":143,"authorAssociation":"CONTRIBUTOR","author":{"login":"dependabot","__typename":"Bot"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"40f0335911f61937a02d5a16f828d2e7d631b626"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-01T14:39:05Z","updatedAt":"2025-12-01T14:39:05Z","url":"https://github.com/executablebooks/github-activity/pull/143#issuecomment-3596895834","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"dependabot[bot]","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6relOk","title":"MAINT: + group the dependabot updates into one PR","url":"https://github.com/executablebooks/github-activity/pull/141","createdAt":"2025-10-01T05:25:01Z","updatedAt":"2025-12-01T14:49:05Z","closedAt":"2025-10-01T05:29:29Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":141,"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"2a62fd546ace04fb69eee9901039710578448bc3"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-10-01T05:29:25Z","updatedAt":"2025-10-01T05:29:25Z","url":"https://github.com/executablebooks/github-activity/pull/141#issuecomment-3354807933","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"bsipocz","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rei2u","title":"Bump + actions/checkout from 4 to 5","url":"https://github.com/executablebooks/github-activity/pull/140","createdAt":"2025-10-01T05:21:21Z","updatedAt":"2025-10-01T05:22:39Z","closedAt":"2025-10-01T05:22:30Z","labels":{"edges":[{"node":{"name":"dependencies"}},{"node":{"name":"github_actions"}}]},"number":140,"authorAssociation":"CONTRIBUTOR","author":{"login":"dependabot","__typename":"Bot"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"dd34ec2e6733c348d408ee928c9cd9f74ee17229"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"dependabot[bot]","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6reiza","title":"Bump + actions/setup-python from 5 to 6","url":"https://github.com/executablebooks/github-activity/pull/139","createdAt":"2025-10-01T05:21:18Z","updatedAt":"2025-10-01T05:29:50Z","closedAt":"2025-10-01T05:29:43Z","labels":{"edges":[{"node":{"name":"dependencies"}},{"node":{"name":"github_actions"}}]},"number":139,"authorAssociation":"CONTRIBUTOR","author":{"login":"dependabot","__typename":"Bot"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"64f982651479ff98577f1774fadb5c9e6f4e0bfc"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"dependabot[bot]","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"bsipocz","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rbjSi","title":"Expose + GitHub API call error","url":"https://github.com/executablebooks/github-activity/pull/138","createdAt":"2025-09-30T22:04:03Z","updatedAt":"2025-12-01T19:40:00Z","closedAt":"2025-12-01T19:40:00Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":138,"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"cdb6572c4bc7db2c4adbfe3f8e2b019026c63fa6"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rZoKz","title":"Update + pre-commit to use Ruff; update versions and add a few rules","url":"https://github.com/executablebooks/github-activity/pull/137","createdAt":"2025-09-30T18:40:36Z","updatedAt":"2025-12-01T14:45:35Z","closedAt":"2025-12-01T14:45:35Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":137,"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"748c4c6ca95f10b405bd42c351c78f856d464fc0"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-01T14:45:29Z","updatedAt":"2025-12-01T14:45:29Z","url":"https://github.com/executablebooks/github-activity/pull/137#issuecomment-3596937495","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"CLOSED","id":"PR_kwDODJbnsM6rZdb7","title":"Use + CI token for testing","url":"https://github.com/executablebooks/github-activity/pull/136","createdAt":"2025-09-30T18:25:24Z","updatedAt":"2025-09-30T18:50:59Z","closedAt":"2025-09-30T18:50:59Z","labels":{"edges":[]},"number":136,"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":null,"mergeCommit":null,"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"CLOSED","id":"PR_kwDODJbnsM6rL8o4","title":"Add + a token to avoid rate limits on tests","url":"https://github.com/executablebooks/github-activity/pull/135","createdAt":"2025-09-29T20:53:49Z","updatedAt":"2025-12-01T14:49:04Z","closedAt":"2025-09-30T01:53:28Z","labels":{"edges":[]},"number":135,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":null,"mergeCommit":null,"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-29T21:54:24Z","updatedAt":"2025-09-29T21:54:24Z","url":"https://github.com/executablebooks/github-activity/pull/135#issuecomment-3349184848","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-30T01:53:26Z","updatedAt":"2025-09-30T01:53:26Z","url":"https://github.com/executablebooks/github-activity/pull/135#issuecomment-3349649974","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rLmPr","title":"Change + token to readonly PAT so we don''t hit rate limits","url":"https://github.com/executablebooks/github-activity/pull/134","createdAt":"2025-09-29T20:19:10Z","updatedAt":"2025-09-30T01:53:09Z","closedAt":"2025-09-30T01:53:09Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":134,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"65dd7bdea3f896d7912ebe280787b3a9a3492e81"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-29T21:17:54Z","updatedAt":"2025-09-29T21:17:54Z","url":"https://github.com/executablebooks/github-activity/pull/134#issuecomment-3349091645","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-30T01:53:05Z","updatedAt":"2025-09-30T01:53:05Z","url":"https://github.com/executablebooks/github-activity/pull/134#issuecomment-3349649490","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}},{"node":{"user":{"login":"bsipocz","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rJne9","title":"Fix + tests and move contributing docs into our docs","url":"https://github.com/executablebooks/github-activity/pull/133","createdAt":"2025-09-29T17:18:05Z","updatedAt":"2025-09-29T20:01:28Z","closedAt":"2025-09-29T20:01:28Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":133,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"199b098d66f2633758980d80f1bc2a1b8ec38939"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6qjl4m","title":"add + pyproject.toml","url":"https://github.com/executablebooks/github-activity/pull/132","createdAt":"2025-09-25T17:32:12Z","updatedAt":"2025-09-29T17:08:37Z","closedAt":"2025-09-29T17:08:37Z","labels":{"edges":[]},"number":132,"authorAssociation":"COLLABORATOR","author":{"login":"minrk","__typename":"User"},"reactions":{"totalCount":1},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"1b6a873860cee4b83d116f15af96b6ad008fb586"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-25T20:15:05Z","updatedAt":"2025-09-25T20:15:05Z","url":"https://github.com/executablebooks/github-activity/pull/132#issuecomment-3335788933","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"minrk","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"minrk","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6h58-F","title":"Ensure + PRs only show up once per changelog","url":"https://github.com/executablebooks/github-activity/pull/130","createdAt":"2025-08-03T21:36:21Z","updatedAt":"2025-09-08T20:46:15Z","closedAt":"2025-09-08T20:46:02Z","labels":{"edges":[{"node":{"name":"bug"}}]},"number":130,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"8dda65716c7e8aedad486b561f809c3c1ff9e1ee"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"nabobalis","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6gJcdX","title":"Allow + excluding certain usernames from changelog","url":"https://github.com/executablebooks/github-activity/pull/128","createdAt":"2025-07-22T21:14:30Z","updatedAt":"2025-09-30T18:20:50Z","closedAt":"2025-07-23T21:16:46Z","labels":{"edges":[{"node":{"name":"enhancement"}}]},"number":128,"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"stefanv","__typename":"User"},"mergeCommit":{"oid":"5b3f082f03ae01651f257c827180e10091d7bda3"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-07-22T22:19:55Z","updatedAt":"2025-07-22T22:19:55Z","url":"https://github.com/executablebooks/github-activity/pull/128#issuecomment-3104992297","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-07-22T22:59:35Z","updatedAt":"2025-07-22T22:59:35Z","url":"https://github.com/executablebooks/github-activity/pull/128#issuecomment-3105066617","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-07-22T23:27:02Z","updatedAt":"2025-07-22T23:27:02Z","url":"https://github.com/executablebooks/github-activity/pull/128#issuecomment-3105104819","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-08T18:14:31Z","updatedAt":"2025-09-08T18:14:31Z","url":"https://github.com/executablebooks/github-activity/pull/128#issuecomment-3267390258","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}},{"node":{"user":{"login":"bsipocz","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"nabobalis","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6ZhXmS","title":"[DOC] + Clarify some intended functionality in docs","url":"https://github.com/executablebooks/github-activity/pull/127","createdAt":"2025-06-07T15:57:26Z","updatedAt":"2025-06-10T10:51:53Z","closedAt":"2025-06-09T16:19:26Z","labels":{"edges":[]},"number":127,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"faa4f4e1e5de5ecbff2dc33fa7408bef1dd9fec6"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-06-09T13:46:08Z","updatedAt":"2025-06-09T13:46:08Z","url":"https://github.com/executablebooks/github-activity/pull/127#issuecomment-2955844867","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-06-09T16:19:44Z","updatedAt":"2025-06-09T16:19:44Z","url":"https://github.com/executablebooks/github-activity/pull/127#issuecomment-2956271998","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}},{"node":{"user":{"login":"manics","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}},{"node":{"user":{"login":"manics","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"CONTRIBUTOR","author":{"login":"manics","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"CONTRIBUTOR","author":{"login":"manics","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6WzJjH","title":"Use + latest github release first instead of github tag","url":"https://github.com/executablebooks/github-activity/pull/125","createdAt":"2025-05-19T23:54:00Z","updatedAt":"2025-09-09T01:03:02Z","closedAt":"2025-06-07T15:58:09Z","labels":{"edges":[]},"number":125,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"c6e278f53ddf1faafa8ddfa460698325ecbc5840"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"nabobalis","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6Sd1ey","title":"make + sure generated anchor links resolve","url":"https://github.com/executablebooks/github-activity/pull/122","createdAt":"2025-04-14T10:43:03Z","updatedAt":"2025-04-14T19:48:40Z","closedAt":"2025-04-14T11:46:28Z","labels":{"edges":[{"node":{"name":"documentation"}}]},"number":122,"authorAssociation":"COLLABORATOR","author":{"login":"minrk","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"a9d85f49e246f751c1699ea99c7ef9f9058c9874"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"minrk","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"minrk","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"minrk","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6SUpKy","title":"Add + changelog for v1.0.3","url":"https://github.com/executablebooks/github-activity/pull/120","createdAt":"2025-04-11T22:31:01Z","updatedAt":"2025-04-11T22:31:25Z","closedAt":"2025-04-11T22:31:25Z","labels":{"edges":[{"node":{"name":"documentation"}}]},"number":120,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"7992169618baa6cf63308a26e03fd20782c97509"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"consideRatio","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"consideRatio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6SUo5a","title":"ci: + fix github action tag in publish workflow","url":"https://github.com/executablebooks/github-activity/pull/119","createdAt":"2025-04-11T22:29:33Z","updatedAt":"2025-04-11T22:29:56Z","closedAt":"2025-04-11T22:29:55Z","labels":{"edges":[{"node":{"name":"ci"}}]},"number":119,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"9da313addfc470f213f2c71ecccc9ebcdd325444"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"consideRatio","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"consideRatio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6SUoyL","title":"ci: + fix location of dependabot.yaml","url":"https://github.com/executablebooks/github-activity/pull/118","createdAt":"2025-04-11T22:28:56Z","updatedAt":"2025-04-11T22:29:11Z","closedAt":"2025-04-11T22:29:11Z","labels":{"edges":[{"node":{"name":"ci"}}]},"number":118,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"9ffeaceb40f87576fca55543a8d7bcbc31c30eaf"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"consideRatio","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"consideRatio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:06 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - B21A:3D99D6:D805CA:2CBEF45:6AA9B865 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '1710' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '3290' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue closed:2025-04-11T22:23:28Z..2025-12-09T16:50:50Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2840' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":7,"pageInfo":{"endCursor":"Y3Vyc29yOjc=","hasNextPage":false},"nodes":[{"state":"CLOSED","id":"I_kwDODJbnsM7dPNiy","title":"Chris + is making a release even though tests are failing because they pass locally","url":"https://github.com/executablebooks/github-activity/issues/148","createdAt":"2025-12-09T16:41:56Z","updatedAt":"2025-12-09T17:01:09Z","closedAt":"2025-12-09T16:43:43Z","labels":{"edges":[]},"number":148,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-09T16:43:37Z","updatedAt":"2025-12-09T16:43:37Z","url":"https://github.com/executablebooks/github-activity/issues/148#issuecomment-3633217170","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"CONTRIBUTOR","createdAt":"2025-12-09T17:01:09Z","updatedAt":"2025-12-09T17:01:09Z","url":"https://github.com/executablebooks/github-activity/issues/148#issuecomment-3633300130","author":{"login":"jtpio","__typename":"User"}}}]}},{"state":"CLOSED","id":"I_kwDODJbnsM7cB2vs","title":"Use + GraphQL API to differentiate bot vs. human PR authors instead of hard-coding + names","url":"https://github.com/executablebooks/github-activity/issues/145","createdAt":"2025-12-03T18:49:51Z","updatedAt":"2025-12-04T02:03:46Z","closedAt":"2025-12-04T02:03:46Z","labels":{"edges":[]},"number":145,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-12-03T19:54:03Z","updatedAt":"2025-12-03T19:54:03Z","url":"https://github.com/executablebooks/github-activity/issues/145#issuecomment-3608586930","author":{"login":"stefanv","__typename":"User"}}}]}},{"state":"CLOSED","id":"I_kwDODJbnsM66Y8Oc","title":"Add + a \"reviewed by\" to each item in the changelog report, listing each reviewer + of a merged PR","url":"https://github.com/executablebooks/github-activity/issues/126","createdAt":"2025-06-07T14:44:19Z","updatedAt":"2025-06-09T16:19:27Z","closedAt":"2025-06-09T16:19:27Z","labels":{"edges":[{"node":{"name":"documentation"}}]},"number":126,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"CONTRIBUTOR","createdAt":"2025-06-07T14:52:58Z","updatedAt":"2025-06-07T14:52:58Z","url":"https://github.com/executablebooks/github-activity/issues/126#issuecomment-2952599145","author":{"login":"manics","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-06-07T15:12:09Z","updatedAt":"2025-06-07T15:12:09Z","url":"https://github.com/executablebooks/github-activity/issues/126#issuecomment-2952637522","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-06-07T16:17:54Z","updatedAt":"2025-06-07T16:18:28Z","url":"https://github.com/executablebooks/github-activity/issues/126#issuecomment-2952722410","author":{"login":"choldgraf","__typename":"User"}}}]}},{"state":"CLOSED","id":"I_kwDODJbnsM63ShIM","title":"Detect + the date of the latest github release rather than the last tag","url":"https://github.com/executablebooks/github-activity/issues/124","createdAt":"2025-05-19T21:41:33Z","updatedAt":"2025-06-07T15:58:10Z","closedAt":"2025-06-07T15:58:10Z","labels":{"edges":[{"node":{"name":"enhancement"}}]},"number":124,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[]}},{"state":"CLOSED","id":"I_kwDODJbnsM6yX_pA","title":"\"how + we define contributors\" link in output no longer resolves","url":"https://github.com/executablebooks/github-activity/issues/121","createdAt":"2025-04-14T10:31:25Z","updatedAt":"2025-04-14T13:04:23Z","closedAt":"2025-04-14T13:04:21Z","labels":{"edges":[{"node":{"name":"bug"}}]},"number":121,"authorAssociation":"COLLABORATOR","author":{"login":"minrk","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-04-14T11:53:19Z","updatedAt":"2025-04-14T11:53:19Z","url":"https://github.com/executablebooks/github-activity/issues/121#issuecomment-2801459164","author":{"login":"consideRatio","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-04-14T12:49:53Z","updatedAt":"2025-04-14T12:49:53Z","url":"https://github.com/executablebooks/github-activity/issues/121#issuecomment-2801607887","author":{"login":"minrk","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-04-14T13:04:21Z","updatedAt":"2025-04-14T13:04:21Z","url":"https://github.com/executablebooks/github-activity/issues/121#issuecomment-2801648616","author":{"login":"consideRatio","__typename":"User"}}}]}},{"state":"CLOSED","id":"I_kwDODJbnsM6kJFV8","title":"Make + the list of bot users configurable","url":"https://github.com/executablebooks/github-activity/issues/100","createdAt":"2024-12-21T08:34:33Z","updatedAt":"2025-07-23T21:16:47Z","closedAt":"2025-07-23T21:16:47Z","labels":{"edges":[]},"number":100,"authorAssociation":"CONTRIBUTOR","author":{"login":"jtpio","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[]}},{"state":"CLOSED","id":"I_kwDODJbnsM5oI5uw","title":"Project''s + missing RELEASE.md and CHANGELOG.md equivalents","url":"https://github.com/executablebooks/github-activity/issues/88","createdAt":"2023-06-08T06:21:26Z","updatedAt":"2025-04-11T22:38:29Z","closedAt":"2025-04-11T22:38:27Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":88,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-04-11T22:38:28Z","updatedAt":"2025-04-11T22:38:28Z","url":"https://github.com/executablebooks/github-activity/issues/88#issuecomment-2798125715","author":{"login":"consideRatio","__typename":"User"}}}]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:07 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 72E1:2016A4:D34FF6:2BC1BC8:6AA9B867 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '1658' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '3342' + X-XSS-Protection: + - '0' + content-length: + - '6092' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr closed:2025-04-11T22:23:28Z..2025-12-09T16:50:50Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2837' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":24,"pageInfo":{"endCursor":"Y3Vyc29yOjI0","hasNextPage":false},"nodes":[{"state":"MERGED","id":"PR_kwDODJbnsM639glW","title":"RLS: + v1.1.0","url":"https://github.com/executablebooks/github-activity/pull/149","createdAt":"2025-12-09T16:43:03Z","updatedAt":"2025-12-09T16:43:42Z","closedAt":"2025-12-09T16:43:42Z","labels":{"edges":[]},"number":149,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"3058c1286a037645e988492779f8ac5f5cfb4632"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM63A9n3","title":"Add + `pytz` to requirements","url":"https://github.com/executablebooks/github-activity/pull/147","createdAt":"2025-12-04T09:27:46Z","updatedAt":"2025-12-04T16:37:14Z","closedAt":"2025-12-04T16:33:42Z","labels":{"edges":[{"node":{"name":"bug"}}]},"number":147,"authorAssociation":"CONTRIBUTOR","author":{"login":"jtpio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"3ffc68f920474d500c7150bde975e86c591a3184"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"CONTRIBUTOR","createdAt":"2025-12-04T09:43:08Z","updatedAt":"2025-12-04T09:43:08Z","url":"https://github.com/executablebooks/github-activity/pull/147#issuecomment-3611138982","author":{"login":"jtpio","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-04T16:37:14Z","updatedAt":"2025-12-04T16:37:14Z","url":"https://github.com/executablebooks/github-activity/pull/147#issuecomment-3613138180","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"jtpio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"nabobalis","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM626xrM","title":"Use + GraphQL API for bot detection","url":"https://github.com/executablebooks/github-activity/pull/146","createdAt":"2025-12-03T20:41:25Z","updatedAt":"2025-12-04T02:03:50Z","closedAt":"2025-12-04T02:03:45Z","labels":{"edges":[]},"number":146,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"stefanv","__typename":"User"},"mergeCommit":{"oid":"7e3a545345a2703bf79a90f7c7b90eb0e3611046"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-03T20:44:16Z","updatedAt":"2025-12-03T20:44:16Z","url":"https://github.com/executablebooks/github-activity/pull/146#issuecomment-3608767494","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-03T22:39:00Z","updatedAt":"2025-12-03T22:39:00Z","url":"https://github.com/executablebooks/github-activity/pull/146#issuecomment-3609145696","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-12-04T02:03:50Z","updatedAt":"2025-12-04T02:03:50Z","url":"https://github.com/executablebooks/github-activity/pull/146#issuecomment-3609643972","author":{"login":"stefanv","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM62bGEx","title":"Update + test suite to use fewer GitHub API calls","url":"https://github.com/executablebooks/github-activity/pull/144","createdAt":"2025-12-01T19:06:38Z","updatedAt":"2025-12-03T19:13:22Z","closedAt":"2025-12-03T19:13:22Z","labels":{"edges":[]},"number":144,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"89a921b5a21618841666799318349ec863b81448"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-12-01T19:40:16Z","updatedAt":"2025-12-01T19:40:16Z","url":"https://github.com/executablebooks/github-activity/pull/144#issuecomment-3598536455","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-01T22:24:33Z","updatedAt":"2025-12-01T22:24:33Z","url":"https://github.com/executablebooks/github-activity/pull/144#issuecomment-3599221851","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-03T19:13:17Z","updatedAt":"2025-12-03T19:13:17Z","url":"https://github.com/executablebooks/github-activity/pull/144#issuecomment-3608420986","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM62QfzK","title":"Bump + actions/checkout from 5 to 6 in the actions group","url":"https://github.com/executablebooks/github-activity/pull/143","createdAt":"2025-12-01T05:42:08Z","updatedAt":"2025-12-01T14:39:18Z","closedAt":"2025-12-01T14:39:10Z","labels":{"edges":[{"node":{"name":"dependencies"}},{"node":{"name":"github_actions"}}]},"number":143,"authorAssociation":"CONTRIBUTOR","author":{"login":"dependabot","__typename":"Bot"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"40f0335911f61937a02d5a16f828d2e7d631b626"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-01T14:39:05Z","updatedAt":"2025-12-01T14:39:05Z","url":"https://github.com/executablebooks/github-activity/pull/143#issuecomment-3596895834","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"dependabot[bot]","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6relOk","title":"MAINT: + group the dependabot updates into one PR","url":"https://github.com/executablebooks/github-activity/pull/141","createdAt":"2025-10-01T05:25:01Z","updatedAt":"2025-12-01T14:49:05Z","closedAt":"2025-10-01T05:29:29Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":141,"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"2a62fd546ace04fb69eee9901039710578448bc3"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-10-01T05:29:25Z","updatedAt":"2025-10-01T05:29:25Z","url":"https://github.com/executablebooks/github-activity/pull/141#issuecomment-3354807933","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"bsipocz","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rei2u","title":"Bump + actions/checkout from 4 to 5","url":"https://github.com/executablebooks/github-activity/pull/140","createdAt":"2025-10-01T05:21:21Z","updatedAt":"2025-10-01T05:22:39Z","closedAt":"2025-10-01T05:22:30Z","labels":{"edges":[{"node":{"name":"dependencies"}},{"node":{"name":"github_actions"}}]},"number":140,"authorAssociation":"CONTRIBUTOR","author":{"login":"dependabot","__typename":"Bot"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"dd34ec2e6733c348d408ee928c9cd9f74ee17229"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"dependabot[bot]","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6reiza","title":"Bump + actions/setup-python from 5 to 6","url":"https://github.com/executablebooks/github-activity/pull/139","createdAt":"2025-10-01T05:21:18Z","updatedAt":"2025-10-01T05:29:50Z","closedAt":"2025-10-01T05:29:43Z","labels":{"edges":[{"node":{"name":"dependencies"}},{"node":{"name":"github_actions"}}]},"number":139,"authorAssociation":"CONTRIBUTOR","author":{"login":"dependabot","__typename":"Bot"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"64f982651479ff98577f1774fadb5c9e6f4e0bfc"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"dependabot[bot]","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"bsipocz","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rbjSi","title":"Expose + GitHub API call error","url":"https://github.com/executablebooks/github-activity/pull/138","createdAt":"2025-09-30T22:04:03Z","updatedAt":"2025-12-01T19:40:00Z","closedAt":"2025-12-01T19:40:00Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":138,"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"cdb6572c4bc7db2c4adbfe3f8e2b019026c63fa6"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rZoKz","title":"Update + pre-commit to use Ruff; update versions and add a few rules","url":"https://github.com/executablebooks/github-activity/pull/137","createdAt":"2025-09-30T18:40:36Z","updatedAt":"2025-12-01T14:45:35Z","closedAt":"2025-12-01T14:45:35Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":137,"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"748c4c6ca95f10b405bd42c351c78f856d464fc0"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-12-01T14:45:29Z","updatedAt":"2025-12-01T14:45:29Z","url":"https://github.com/executablebooks/github-activity/pull/137#issuecomment-3596937495","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"CLOSED","id":"PR_kwDODJbnsM6rZdb7","title":"Use + CI token for testing","url":"https://github.com/executablebooks/github-activity/pull/136","createdAt":"2025-09-30T18:25:24Z","updatedAt":"2025-09-30T18:50:59Z","closedAt":"2025-09-30T18:50:59Z","labels":{"edges":[]},"number":136,"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":null,"mergeCommit":null,"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"CLOSED","id":"PR_kwDODJbnsM6rL8o4","title":"Add + a token to avoid rate limits on tests","url":"https://github.com/executablebooks/github-activity/pull/135","createdAt":"2025-09-29T20:53:49Z","updatedAt":"2025-12-01T14:49:04Z","closedAt":"2025-09-30T01:53:28Z","labels":{"edges":[]},"number":135,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":null,"mergeCommit":null,"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-29T21:54:24Z","updatedAt":"2025-09-29T21:54:24Z","url":"https://github.com/executablebooks/github-activity/pull/135#issuecomment-3349184848","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-30T01:53:26Z","updatedAt":"2025-09-30T01:53:26Z","url":"https://github.com/executablebooks/github-activity/pull/135#issuecomment-3349649974","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rLmPr","title":"Change + token to readonly PAT so we don''t hit rate limits","url":"https://github.com/executablebooks/github-activity/pull/134","createdAt":"2025-09-29T20:19:10Z","updatedAt":"2025-09-30T01:53:09Z","closedAt":"2025-09-30T01:53:09Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":134,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"65dd7bdea3f896d7912ebe280787b3a9a3492e81"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-29T21:17:54Z","updatedAt":"2025-09-29T21:17:54Z","url":"https://github.com/executablebooks/github-activity/pull/134#issuecomment-3349091645","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-30T01:53:05Z","updatedAt":"2025-09-30T01:53:05Z","url":"https://github.com/executablebooks/github-activity/pull/134#issuecomment-3349649490","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}},{"node":{"user":{"login":"bsipocz","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6rJne9","title":"Fix + tests and move contributing docs into our docs","url":"https://github.com/executablebooks/github-activity/pull/133","createdAt":"2025-09-29T17:18:05Z","updatedAt":"2025-09-29T20:01:28Z","closedAt":"2025-09-29T20:01:28Z","labels":{"edges":[{"node":{"name":"maintenance"}}]},"number":133,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"199b098d66f2633758980d80f1bc2a1b8ec38939"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6qjl4m","title":"add + pyproject.toml","url":"https://github.com/executablebooks/github-activity/pull/132","createdAt":"2025-09-25T17:32:12Z","updatedAt":"2025-09-29T17:08:37Z","closedAt":"2025-09-29T17:08:37Z","labels":{"edges":[]},"number":132,"authorAssociation":"COLLABORATOR","author":{"login":"minrk","__typename":"User"},"reactions":{"totalCount":1},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"1b6a873860cee4b83d116f15af96b6ad008fb586"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-25T20:15:05Z","updatedAt":"2025-09-25T20:15:05Z","url":"https://github.com/executablebooks/github-activity/pull/132#issuecomment-3335788933","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"minrk","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"minrk","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6h58-F","title":"Ensure + PRs only show up once per changelog","url":"https://github.com/executablebooks/github-activity/pull/130","createdAt":"2025-08-03T21:36:21Z","updatedAt":"2025-09-08T20:46:15Z","closedAt":"2025-09-08T20:46:02Z","labels":{"edges":[{"node":{"name":"bug"}}]},"number":130,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"bsipocz","__typename":"User"},"mergeCommit":{"oid":"8dda65716c7e8aedad486b561f809c3c1ff9e1ee"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"nabobalis","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6gJcdX","title":"Allow + excluding certain usernames from changelog","url":"https://github.com/executablebooks/github-activity/pull/128","createdAt":"2025-07-22T21:14:30Z","updatedAt":"2025-09-30T18:20:50Z","closedAt":"2025-07-23T21:16:46Z","labels":{"edges":[{"node":{"name":"enhancement"}}]},"number":128,"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"stefanv","__typename":"User"},"mergeCommit":{"oid":"5b3f082f03ae01651f257c827180e10091d7bda3"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-07-22T22:19:55Z","updatedAt":"2025-07-22T22:19:55Z","url":"https://github.com/executablebooks/github-activity/pull/128#issuecomment-3104992297","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","createdAt":"2025-07-22T22:59:35Z","updatedAt":"2025-07-22T22:59:35Z","url":"https://github.com/executablebooks/github-activity/pull/128#issuecomment-3105066617","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-07-22T23:27:02Z","updatedAt":"2025-07-22T23:27:02Z","url":"https://github.com/executablebooks/github-activity/pull/128#issuecomment-3105104819","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-09-08T18:14:31Z","updatedAt":"2025-09-08T18:14:31Z","url":"https://github.com/executablebooks/github-activity/pull/128#issuecomment-3267390258","author":{"login":"bsipocz","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}},{"node":{"user":{"login":"bsipocz","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"stefanv","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"stefanv","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"bsipocz","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"stefanv","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"nabobalis","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6ZhXmS","title":"[DOC] + Clarify some intended functionality in docs","url":"https://github.com/executablebooks/github-activity/pull/127","createdAt":"2025-06-07T15:57:26Z","updatedAt":"2025-06-10T10:51:53Z","closedAt":"2025-06-09T16:19:26Z","labels":{"edges":[]},"number":127,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"faa4f4e1e5de5ecbff2dc33fa7408bef1dd9fec6"},"baseRefName":"main","comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2025-06-09T13:46:08Z","updatedAt":"2025-06-09T13:46:08Z","url":"https://github.com/executablebooks/github-activity/pull/127#issuecomment-2955844867","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2025-06-09T16:19:44Z","updatedAt":"2025-06-09T16:19:44Z","url":"https://github.com/executablebooks/github-activity/pull/127#issuecomment-2956271998","author":{"login":"choldgraf","__typename":"User"}}}]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}},{"node":{"user":{"login":"manics","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}},{"node":{"user":{"login":"manics","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":null},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"CONTRIBUTOR","author":{"login":"manics","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"CONTRIBUTOR","author":{"login":"manics","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6WzJjH","title":"Use + latest github release first instead of github tag","url":"https://github.com/executablebooks/github-activity/pull/125","createdAt":"2025-05-19T23:54:00Z","updatedAt":"2025-09-09T01:03:02Z","closedAt":"2025-06-07T15:58:09Z","labels":{"edges":[]},"number":125,"authorAssociation":"MEMBER","author":{"login":"choldgraf","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"choldgraf","__typename":"User"},"mergeCommit":{"oid":"c6e278f53ddf1faafa8ddfa460698325ecbc5840"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}},{"node":{"commit":{"committer":{"user":{"login":"choldgraf","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"choldgraf","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"nabobalis","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6Sd1ey","title":"make + sure generated anchor links resolve","url":"https://github.com/executablebooks/github-activity/pull/122","createdAt":"2025-04-14T10:43:03Z","updatedAt":"2025-04-14T19:48:40Z","closedAt":"2025-04-14T11:46:28Z","labels":{"edges":[{"node":{"name":"documentation"}}]},"number":122,"authorAssociation":"COLLABORATOR","author":{"login":"minrk","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"a9d85f49e246f751c1699ea99c7ef9f9058c9874"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"minrk","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"minrk","__typename":"User"}}}]}}}}]},"reviews":{"edges":[{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"minrk","__typename":"User"}}},{"node":{"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"}}}]}},{"state":"MERGED","id":"PR_kwDODJbnsM6SUpKy","title":"Add + changelog for v1.0.3","url":"https://github.com/executablebooks/github-activity/pull/120","createdAt":"2025-04-11T22:31:01Z","updatedAt":"2025-04-11T22:31:25Z","closedAt":"2025-04-11T22:31:25Z","labels":{"edges":[{"node":{"name":"documentation"}}]},"number":120,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"7992169618baa6cf63308a26e03fd20782c97509"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"consideRatio","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"consideRatio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6SUo5a","title":"ci: + fix github action tag in publish workflow","url":"https://github.com/executablebooks/github-activity/pull/119","createdAt":"2025-04-11T22:29:33Z","updatedAt":"2025-04-11T22:29:56Z","closedAt":"2025-04-11T22:29:55Z","labels":{"edges":[{"node":{"name":"ci"}}]},"number":119,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"9da313addfc470f213f2c71ecccc9ebcdd325444"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"consideRatio","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"consideRatio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6SUoyL","title":"ci: + fix location of dependabot.yaml","url":"https://github.com/executablebooks/github-activity/pull/118","createdAt":"2025-04-11T22:28:56Z","updatedAt":"2025-04-11T22:29:11Z","closedAt":"2025-04-11T22:29:11Z","labels":{"edges":[{"node":{"name":"ci"}}]},"number":118,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"9ffeaceb40f87576fca55543a8d7bcbc31c30eaf"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"consideRatio","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"consideRatio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}},{"state":"MERGED","id":"PR_kwDODJbnsM6SUnIq","title":"Add + changelog for v1.0.2","url":"https://github.com/executablebooks/github-activity/pull/117","createdAt":"2025-04-11T22:21:36Z","updatedAt":"2025-04-11T22:23:29Z","closedAt":"2025-04-11T22:23:29Z","labels":{"edges":[{"node":{"name":"documentation"}}]},"number":117,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"mergedBy":{"login":"consideRatio","__typename":"User"},"mergeCommit":{"oid":"333712d1e6f70e1d79a8b7a51884fb301522c64d"},"baseRefName":"main","comments":{"edges":[]},"commits":{"edges":[{"node":{"commit":{"committer":{"user":{"login":"consideRatio","__typename":"User"}},"authors":{"edges":[{"node":{"user":{"login":"consideRatio","__typename":"User"}}}]}}}}]},"reviews":{"edges":[]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:09 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 114F:2C9A:D53F55:2C393C1:6AA9B868 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '1606' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '3394' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_cli/test_cli[cli_def_branch].yaml b/tests/cassettes/test_cli/test_cli[cli_def_branch].yaml new file mode 100644 index 0000000..45ec6b6 --- /dev/null +++ b/tests/cassettes/test_cli/test_cli[cli_def_branch].yaml @@ -0,0 +1,580 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: HEAD + uri: https://api.github.com/repos/executablebooks/github-activity + response: + body: + string: '' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:44 GMT + ETag: + - W/"a3d17a6aecba37ebbcb1fc08712cc37d8db7039f6311f9374639af62bf04dcf3" + Last-Modified: + - Tue, 15 Sep 2026 21:15:16 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - B66A:10B670:14DCDF4:44AA4F5:6AA9B850 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4959' + X-RateLimit-Reset: + - '1789510186' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '41' + X-XSS-Protection: + - '0' + content-length: + - '0' + x-accepted-github-permissions: + - metadata=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-01 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-01","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:45 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 3594:54974:14ACDE9:4467D30:6AA9B851 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4879' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '121' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-15 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-15","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:45 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 7256:14C0D:13A454D:41859D0:6AA9B851 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4878' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '122' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2841' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":1,"pageInfo":{"endCursor":"Y3Vyc29yOjE=","hasNextPage":false},"nodes":[{"state":"OPEN","id":"MDU6SXNzdWU3ODI4ODAzNDA=","title":"Duplication + of tag definitions","url":"https://github.com/executablebooks/github-activity/issues/41","createdAt":"2021-01-10T18:40:40Z","updatedAt":"2021-02-27T21:26:07Z","closedAt":null,"labels":{"edges":[]},"number":41,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2021-01-11T12:38:13Z","updatedAt":"2021-01-11T12:38:13Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-757925534","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2021-02-27T21:25:39Z","updatedAt":"2021-02-27T21:25:39Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-787150067","author":{"login":"choldgraf","__typename":"User"}}}]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:46 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 95CF:2F084D:148EE65:43E1642:6AA9B852 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2594' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2406' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2838' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:47 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 9C2D:3B4F44:126F924:3D10389:6AA9B852 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2542' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2458' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2840' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":0,"pageInfo":{"endCursor":null,"hasNextPage":false},"nodes":[]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:48 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - B8F0:129720:12E9BF8:3E9EA03:6AA9B853 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2490' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2510' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2837' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:48 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - AC98:2C9A:D4D5E2:2C2330D:6AA9B854 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2438' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2562' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_cli/test_cli[cli_no_target].yaml b/tests/cassettes/test_cli/test_cli[cli_no_target].yaml new file mode 100644 index 0000000..2020afb --- /dev/null +++ b/tests/cassettes/test_cli/test_cli[cli_no_target].yaml @@ -0,0 +1,580 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: HEAD + uri: https://api.github.com/repos/executablebooks/github-activity + response: + body: + string: '' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:49 GMT + ETag: + - W/"a3d17a6aecba37ebbcb1fc08712cc37d8db7039f6311f9374639af62bf04dcf3" + Last-Modified: + - Tue, 15 Sep 2026 21:15:16 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - C38A:A93EB:DAA0B7:2D31DB7:6AA9B855 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4958' + X-RateLimit-Reset: + - '1789510186' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '42' + X-XSS-Protection: + - '0' + content-length: + - '0' + x-accepted-github-permissions: + - metadata=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-01 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-01","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:49 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 2225:207C2C:D362FF:2BCC835:6AA9B855 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4877' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '123' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-15 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-15","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:50 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 7F8D:3D99D6:D7B812:2CAECE8:6AA9B856 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4876' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '124' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2841' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":1,"pageInfo":{"endCursor":"Y3Vyc29yOjE=","hasNextPage":false},"nodes":[{"state":"OPEN","id":"MDU6SXNzdWU3ODI4ODAzNDA=","title":"Duplication + of tag definitions","url":"https://github.com/executablebooks/github-activity/issues/41","createdAt":"2021-01-10T18:40:40Z","updatedAt":"2021-02-27T21:26:07Z","closedAt":null,"labels":{"edges":[]},"number":41,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2021-01-11T12:38:13Z","updatedAt":"2021-01-11T12:38:13Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-757925534","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2021-02-27T21:25:39Z","updatedAt":"2021-02-27T21:25:39Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-787150067","author":{"login":"choldgraf","__typename":"User"}}}]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:50 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 906F:1D9C88:D3F211:2BFBD32:6AA9B856 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2386' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2614' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2838' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:51 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 438C:1A1CE5:D80D47:2CAFCDD:6AA9B857 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2334' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2666' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2840' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":0,"pageInfo":{"endCursor":null,"hasNextPage":false},"nodes":[]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:52 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - C225:1D9C88:D3FA19:2BFD816:6AA9B857 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2282' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2718' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2837' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:52 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - E357:22D75A:DB2D22:2D5D9B7:6AA9B858 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2230' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2770' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_cli/test_cli[cli_w_parts].yaml b/tests/cassettes/test_cli/test_cli[cli_w_parts].yaml new file mode 100644 index 0000000..5c724e1 --- /dev/null +++ b/tests/cassettes/test_cli/test_cli[cli_w_parts].yaml @@ -0,0 +1,580 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: HEAD + uri: https://api.github.com/repos/executablebooks/github-activity + response: + body: + string: '' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:40 GMT + ETag: + - W/"a3d17a6aecba37ebbcb1fc08712cc37d8db7039f6311f9374639af62bf04dcf3" + Last-Modified: + - Tue, 15 Sep 2026 21:15:16 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 5C01:201AE0:D97DC6:2D060A7:6AA9B84C + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4960' + X-RateLimit-Reset: + - '1789510186' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '40' + X-XSS-Protection: + - '0' + content-length: + - '0' + x-accepted-github-permissions: + - metadata=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-01 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-01","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:41 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 0C8B:201AE0:D98049:2D06941:6AA9B84C + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4881' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '119' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-15 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-15","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:41 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 622E:2C9A:D4AF54:2C1B1B0:6AA9B84D + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4880' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '120' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2841' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":1,"pageInfo":{"endCursor":"Y3Vyc29yOjE=","hasNextPage":false},"nodes":[{"state":"OPEN","id":"MDU6SXNzdWU3ODI4ODAzNDA=","title":"Duplication + of tag definitions","url":"https://github.com/executablebooks/github-activity/issues/41","createdAt":"2021-01-10T18:40:40Z","updatedAt":"2021-02-27T21:26:07Z","closedAt":null,"labels":{"edges":[]},"number":41,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2021-01-11T12:38:13Z","updatedAt":"2021-01-11T12:38:13Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-757925534","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2021-02-27T21:25:39Z","updatedAt":"2021-02-27T21:25:39Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-787150067","author":{"login":"choldgraf","__typename":"User"}}}]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:42 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - E747:3D99D6:D78E20:2CA603F:6AA9B84D + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2802' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2198' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2838' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:43 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - C321:3F5885:DC0096:2D92CC6:6AA9B84E + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2750' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2250' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2840' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":0,"pageInfo":{"endCursor":null,"hasNextPage":false},"nodes":[]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:43 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - E411:1ED0:8F90D0:1DB7B9D:6AA9B84F + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2698' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2302' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2837' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:44 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - E3A7:197E25:148F8D0:4499418:6AA9B84F + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2646' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2354' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_cli/test_cli[cli_w_url].yaml b/tests/cassettes/test_cli/test_cli[cli_w_url].yaml new file mode 100644 index 0000000..2d7798a --- /dev/null +++ b/tests/cassettes/test_cli/test_cli[cli_w_url].yaml @@ -0,0 +1,582 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: HEAD + uri: https://api.github.com/repos/executablebooks/github-activity + response: + body: + string: '' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:36 GMT + ETag: + - W/"a3d17a6aecba37ebbcb1fc08712cc37d8db7039f6311f9374639af62bf04dcf3" + Last-Modified: + - Tue, 15 Sep 2026 21:15:16 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 7C4E:25FB2B:1278632:3D383EB:6AA9B847 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4961' + X-RateLimit-Reset: + - '1789510186' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '39' + X-XSS-Protection: + - '0' + content-length: + - '0' + x-accepted-github-permissions: + - metadata=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-01 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-01","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:36 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 8EC8:27A210:1329653:3F4CD92:6AA9B848 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4883' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '117' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-15 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-15","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:37 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 6ACA:1AAC14:CE6F2C:2AA7A74:6AA9B849 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4882' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '118' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2841' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":1,"pageInfo":{"endCursor":"Y3Vyc29yOjE=","hasNextPage":false},"nodes":[{"state":"OPEN","id":"MDU6SXNzdWU3ODI4ODAzNDA=","title":"Duplication + of tag definitions","url":"https://github.com/executablebooks/github-activity/issues/41","createdAt":"2021-01-10T18:40:40Z","updatedAt":"2021-02-27T21:26:07Z","closedAt":null,"labels":{"edges":[]},"number":41,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2021-01-11T12:38:13Z","updatedAt":"2021-01-11T12:38:13Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-757925534","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2021-02-27T21:25:39Z","updatedAt":"2021-02-27T21:25:39Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-787150067","author":{"login":"choldgraf","__typename":"User"}}}]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:38 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 7FD5:6D54F:D3005E:2BC1CF5:6AA9B849 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '3010' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '1990' + X-XSS-Protection: + - '0' + content-length: + - '1032' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2838' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:39 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - B2CA:2655BF:E145F5:2E6619F:6AA9B84A + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2958' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2042' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2840' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":0,"pageInfo":{"endCursor":null,"hasNextPage":false},"nodes":[]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:39 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 698F:2655BF:E14A8B:2E670A3:6AA9B84B + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2906' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2094' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2837' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:40 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 41F1:2D88FF:DFB808:2E9C669:6AA9B84B + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2854' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2146' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_cli/test_cli_dot_config.yaml b/tests/cassettes/test_cli/test_cli_dot_config.yaml new file mode 100644 index 0000000..4a731c0 --- /dev/null +++ b/tests/cassettes/test_cli/test_cli_dot_config.yaml @@ -0,0 +1,580 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: HEAD + uri: https://api.github.com/repos/executablebooks/github-activity + response: + body: + string: '' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:54 GMT + ETag: + - W/"a3d17a6aecba37ebbcb1fc08712cc37d8db7039f6311f9374639af62bf04dcf3" + Last-Modified: + - Tue, 15 Sep 2026 21:15:16 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - A30E:C0AB7:D90DED:2CDABCD:6AA9B85A + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4957' + X-RateLimit-Reset: + - '1789510186' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '43' + X-XSS-Protection: + - '0' + content-length: + - '0' + x-accepted-github-permissions: + - metadata=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-01 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-01","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:54 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - CAF6:295EF6:DB9E7D:2D74AA1:6AA9B85A + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4875' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '125' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-15 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-15","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:55 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 0BD4:25BC62:D4BEF3:2C2CFBC:6AA9B85A + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4874' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '126' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2841' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":1,"pageInfo":{"endCursor":"Y3Vyc29yOjE=","hasNextPage":false},"nodes":[{"state":"OPEN","id":"MDU6SXNzdWU3ODI4ODAzNDA=","title":"Duplication + of tag definitions","url":"https://github.com/executablebooks/github-activity/issues/41","createdAt":"2021-01-10T18:40:40Z","updatedAt":"2021-02-27T21:26:07Z","closedAt":null,"labels":{"edges":[]},"number":41,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2021-01-11T12:38:13Z","updatedAt":"2021-01-11T12:38:13Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-757925534","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2021-02-27T21:25:39Z","updatedAt":"2021-02-27T21:25:39Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-787150067","author":{"login":"choldgraf","__typename":"User"}}}]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:55 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - B672:14A62E:D84C0B:2CA1920:6AA9B85B + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2178' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2822' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2838' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:56 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - E252:3F5885:DC4D20:2DA288E:6AA9B85C + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2126' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2874' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2840' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":0,"pageInfo":{"endCursor":null,"hasNextPage":false},"nodes":[]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:57 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 94CF:2C2C2B:D9EADA:2D05C1F:6AA9B85C + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2074' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2926' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2837' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:58 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 73BF:1A1CE5:D82F6F:2CB6D6B:6AA9B85D + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '2022' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '2978' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_cli/test_cli_nonexistent_branch.yaml b/tests/cassettes/test_cli/test_cli_nonexistent_branch.yaml new file mode 100644 index 0000000..db5784c --- /dev/null +++ b/tests/cassettes/test_cli/test_cli_nonexistent_branch.yaml @@ -0,0 +1,582 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: HEAD + uri: https://api.github.com/repos/executablebooks/github-activity + response: + body: + string: '' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Cache-Control: + - private, max-age=60, s-maxage=60 + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:58 GMT + ETag: + - W/"a3d17a6aecba37ebbcb1fc08712cc37d8db7039f6311f9374639af62bf04dcf3" + Last-Modified: + - Tue, 15 Sep 2026 21:15:16 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 481F:1AAC14:CEDCB0:2ABE59B:6AA9B85E + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4956' + X-RateLimit-Reset: + - '1789510186' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '44' + X-XSS-Protection: + - '0' + content-length: + - '0' + x-accepted-github-permissions: + - metadata=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-01 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-01","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:59 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 3D1B:27A210:133043F:3F639FC:6AA9B85E + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4873' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '127' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: GET + uri: https://api.github.com/repos/executablebooks/github-activity/commits/2021-01-15 + response: + body: + string: '{"message":"No commit found for SHA: 2021-01-15","documentation_url":"https://docs.github.com/rest/commits/commits#get-a-commit","status":"422"}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Length: + - '144' + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:27:59 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 3146:D1C80:1201A39:3BBB420:6AA9B85F + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4872' + X-RateLimit-Reset: + - '1789510078' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '128' + X-XSS-Protection: + - '0' + x-accepted-github-permissions: + - contents=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 422 + message: Unprocessable Entity +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2841' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":1,"pageInfo":{"endCursor":"Y3Vyc29yOjE=","hasNextPage":false},"nodes":[{"state":"OPEN","id":"MDU6SXNzdWU3ODI4ODAzNDA=","title":"Duplication + of tag definitions","url":"https://github.com/executablebooks/github-activity/issues/41","createdAt":"2021-01-10T18:40:40Z","updatedAt":"2021-02-27T21:26:07Z","closedAt":null,"labels":{"edges":[]},"number":41,"authorAssociation":"COLLABORATOR","author":{"login":"consideRatio","__typename":"User"},"reactions":{"totalCount":0},"comments":{"edges":[{"node":{"authorAssociation":"MEMBER","createdAt":"2021-01-11T12:38:13Z","updatedAt":"2021-01-11T12:38:13Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-757925534","author":{"login":"choldgraf","__typename":"User"}}},{"node":{"authorAssociation":"MEMBER","createdAt":"2021-02-27T21:25:39Z","updatedAt":"2021-02-27T21:25:39Z","url":"https://github.com/executablebooks/github-activity/issues/41#issuecomment-787150067","author":{"login":"choldgraf","__typename":"User"}}}]}}]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:00 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - E035:3F70FC:131B25F:3F37112:6AA9B85F + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '1970' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '3030' + X-XSS-Protection: + - '0' + content-length: + - '1032' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr created:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2838' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:00 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 9CA8:2306FC:131AF62:3F44333:6AA9B860 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '1918' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '3082' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:issue closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) + {\n issueCount\n pageInfo {\n endCursor\n hasNextPage\n }\n nodes + {\n ... on PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2840' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: '{"data":{"search":{"issueCount":0,"pageInfo":{"endCursor":null,"hasNextPage":false},"nodes":[]}}}' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:01 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 7E4F:10DE5D:1912249:5315351:6AA9B861 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '1866' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '3134' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +- request: + body: '{"query": "{\n search(first: 50, query: \"repo:executablebooks/github-activity + type:pr closed:2021-01-01T00:00:00Z..2021-01-15T00:00:00Z\", type: ISSUE) {\n issueCount\n pageInfo + {\n endCursor\n hasNextPage\n }\n nodes {\n ... on + PullRequest {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n mergedBy {\n login\n __typename\n }\n mergeCommit + {\n oid\n }\n baseRefName\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n commits(first: + 100) {\n edges {\n node {\n commit {\n committer + {\n user {\n login\n __typename\n }\n }\n authors(first: + 10) {\n edges {\n node {\n user + {\n login\n __typename\n }\n }\n }\n }\n }\n }\n }\n }\n\n reviews(last: + 100) {\n edges {\n node {\n authorAssociation\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n ... + on Issue {\n state\n id\n title\n url\n createdAt\n updatedAt\n closedAt\n labels(first: + 10) {\n edges {\n node {\n name\n }\n }\n }\n number\n authorAssociation\n author + {\n login\n __typename\n }\n reactions(content: + THUMBS_UP) {\n totalCount\n }\n\n comments(last: + 100) {\n edges {\n node {\n authorAssociation\n createdAt\n updatedAt\n url\n author + {\n login\n __typename\n }\n }\n }\n }\n\n }\n }\n }\n}\n"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2837' + Content-Type: + - application/json + User-Agent: + - python-requests/2.34.2 + method: POST + uri: https://api.github.com/graphql + response: + body: + string: "{\"data\":{\"search\":{\"issueCount\":1,\"pageInfo\":{\"endCursor\":\"Y3Vyc29yOjE=\",\"hasNextPage\":false},\"nodes\":[{\"state\":\"MERGED\",\"id\":\"MDExOlB1bGxSZXF1ZXN0NTUyMzI3NDk5\",\"title\":\"\U0001F41B + FIX: tags like 'doctor' would trigger 'doc' tag\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40\",\"createdAt\":\"2021-01-10T18:34:58Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"closedAt\":\"2021-01-11T12:36:49Z\",\"labels\":{\"edges\":[]},\"number\":40,\"authorAssociation\":\"COLLABORATOR\",\"author\":{\"login\":\"consideRatio\",\"__typename\":\"User\"},\"reactions\":{\"totalCount\":0},\"mergedBy\":{\"login\":\"choldgraf\",\"__typename\":\"User\"},\"mergeCommit\":{\"oid\":\"c740a454def057304556675ce7694dc0f2eb6c88\"},\"baseRefName\":\"master\",\"comments\":{\"edges\":[{\"node\":{\"authorAssociation\":\"MEMBER\",\"createdAt\":\"2021-01-11T12:37:01Z\",\"updatedAt\":\"2021-01-11T12:37:01Z\",\"url\":\"https://github.com/executablebooks/github-activity/pull/40#issuecomment-757924981\",\"author\":{\"login\":\"choldgraf\",\"__typename\":\"User\"}}}]},\"commits\":{\"edges\":[{\"node\":{\"commit\":{\"committer\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}},\"authors\":{\"edges\":[{\"node\":{\"user\":{\"login\":\"consideRatio\",\"__typename\":\"User\"}}}]}}}}]},\"reviews\":{\"edges\":[]}}]}}}" + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:02 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v4; format=json + X-GitHub-Request-Id: + - 535D:3FBE22:13753DB:4033171:6AA9B861 + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '1814' + X-RateLimit-Reset: + - '1789510879' + X-RateLimit-Resource: + - graphql + X-RateLimit-Used: + - '3186' + X-XSS-Protection: + - '0' + x-github-edge-region: + - iad + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_cli/test_invalid_repository_error.yaml b/tests/cassettes/test_cli/test_invalid_repository_error.yaml new file mode 100644 index 0000000..44e1b2a --- /dev/null +++ b/tests/cassettes/test_cli/test_invalid_repository_error.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + User-Agent: + - python-requests/2.34.2 + method: HEAD + uri: https://api.github.com/repos/invalid-org/nonexistent-repo-12345 + response: + body: + string: '' + headers: + Access-Control-Allow-Origin: + - '*' + 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, Warning + Content-Security-Policy: + - default-src 'none' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 15 Sep 2026 21:28:10 GMT + Referrer-Policy: + - origin-when-cross-origin, strict-origin-when-cross-origin + Server: + - github.com + Strict-Transport-Security: + - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding, Accept, X-Requested-With + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-GitHub-Media-Type: + - github.v3; format=json + X-GitHub-Request-Id: + - 6D16:3C23AB:D7403E:2C7BE75:6AA9B86A + X-RateLimit-Limit: + - '5000' + X-RateLimit-Remaining: + - '4954' + X-RateLimit-Reset: + - '1789510186' + X-RateLimit-Resource: + - core + X-RateLimit-Used: + - '46' + X-XSS-Protection: + - '0' + content-length: + - '0' + x-accepted-github-permissions: + - metadata=read + x-github-api-version-selected: + - '2022-11-28' + x-github-edge-region: + - iad + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..b2e8d97 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,46 @@ +import os + +import pytest + +# The weekly live-api workflow sets this to run the tests against the real GitHub API +LIVE_TESTS = bool(os.environ.get("GITHUB_ACTIVITY_LIVE_TESTS")) + + +@pytest.fixture(scope="session") +def vcr_config(): + config = { + # Never write tokens into the cassettes + "filter_headers": ["authorization"], + # Every GraphQL request POSTs to the same URL, so the body must match too + "match_on": ["method", "scheme", "host", "path", "query", "body"], + "decode_compressed_response": True, + } + if LIVE_TESTS: + # Many tests make identical requests, replaying them keeps the run + # within the GITHUB_TOKEN rate limit + config["allow_playback_repeats"] = True + return config + + +if LIVE_TESTS: + # Record every test into one throwaway cassette, so only requests that + # haven't been made yet in this run reach GitHub + + @pytest.fixture(scope="session") + def record_mode(): + return "new_episodes" + + @pytest.fixture(scope="session") + def vcr_cassette_dir(tmp_path_factory): + return str(tmp_path_factory.mktemp("cassettes")) + + @pytest.fixture + def default_cassette_name(): + return "live" + + +@pytest.fixture(autouse=True) +def github_token(monkeypatch): + """Replaying cassettes needs no real token, but the code refuses to run without one.""" + if not (os.environ.get("GITHUB_ACCESS_TOKEN") or os.environ.get("GITHUB_TOKEN")): + monkeypatch.setenv("GITHUB_ACCESS_TOKEN", "dummy-token") diff --git a/tests/test_cli.py b/tests/test_cli.py index 28a8650..c4d6a45 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,31 +4,39 @@ from pytest import mark +from github_activity.cli import main + +# GitHub API responses are replayed from tests/cassettes/, re-record them with: +# GITHUB_ACCESS_TOKEN=... pytest --record-mode=rewrite +pytestmark = mark.vcr + @mark.parametrize( "cmd,basename", [ # CLI with URL ( - "github-activity {url} -s 2021-01-01 -u 2021-01-15 -o {path_output}", + "{url} -s 2021-01-01 -u 2021-01-15 -o {path_output}", "cli_w_url", ), # CLI with parts ( - "github-activity {org}/{repo} -s 2021-01-01 -u 2021-01-15 -o {path_output}", + "{org}/{repo} -s 2021-01-01 -u 2021-01-15 -o {path_output}", "cli_w_parts", ), # CLI with explicit branch filter (using master since that was likely the name in 2021) ( - "github-activity {org}/{repo} -s 2021-01-01 -u 2021-01-15 -o {path_output} -b master", + "{org}/{repo} -s 2021-01-01 -u 2021-01-15 -o {path_output} -b master", "cli_def_branch", ), # CLI with no target ( - "github-activity -s 2021-01-01 -u 2021-01-15 -o {path_output}", + "-s 2021-01-01 -u 2021-01-15 -o {path_output}", "cli_no_target", ), ], + # Short ids so the cassette file names stay readable + ids=["cli_w_url", "cli_w_parts", "cli_def_branch", "cli_no_target"], ) def test_cli(tmpdir, file_regression, cmd, basename): """The output of all file_regressions should be the same, testing diff opts.""" @@ -39,42 +47,45 @@ def test_cli(tmpdir, file_regression, cmd, basename): org, repo = ("executablebooks", "github-activity") command = cmd.format(path_output=path_output, url=url, org=org, repo=repo) - run(command.split(), check=True) + main(command.split()) md = path_output.read_text() file_regression.check(md, basename=basename, extension=".md") def test_cli_dot_config(tmp_path, monkeypatch, file_regression): """Test that pyproject.toml config is loaded""" - cmd = "github-activity -s 2021-01-01 -u 2021-01-15 -o {path_output}" + cmd = "-s 2021-01-01 -u 2021-01-15 -o {path_output}" basename = "cli_no_target_pyproject" path_output = tmp_path / "out.md" - # We need to augment the repository with a custom .githubactivity.json - # but since a local git repo is only needed to get the origin a shallow - # clone is enough + # A local repository with an origin is enough to test config lookup. + repo_path = tmp_path / "repo" + (repo_path / "tests").mkdir(parents=True) + run(["git", "init", str(repo_path)], check=True) run( [ "git", - "clone", - "--depth=1", + "-C", + str(repo_path), + "remote", + "add", + "origin", "https://github.com/executablebooks/github-activity", - str(tmp_path / "repo"), ], check=True, ) tests_dir = Path(__file__).parent shutil.copyfile( str(tests_dir / "resources" / "cli_no_target.githubactivity.json"), - str(tmp_path / "repo" / ".githubactivity.json"), + str(repo_path / ".githubactivity.json"), ) # cd into a subdirectory so we test the lookup of .githubactivity.json - monkeypatch.chdir(tmp_path / "repo" / "tests") + monkeypatch.chdir(repo_path / "tests") command = cmd.format(path_output=path_output) - run(command.split(), check=True) + main(command.split()) md = path_output.read_text() file_regression.check(md, basename=basename, extension=".md") @@ -85,8 +96,8 @@ def test_cli_nonexistent_branch(tmpdir): org, repo = ("executablebooks", "github-activity") - cmd = f"github-activity {org}/{repo} -s 2021-01-01 -u 2021-01-15 -o {path_output} -b foo" - run(cmd.split(), check=True) + cmd = f"{org}/{repo} -s 2021-01-01 -u 2021-01-15 -o {path_output} -b foo" + main(cmd.split()) md = path_output.read_text() assert "Contributors to this release" in md assert "Merged PRs" not in md