pygithub
Advanced tools
| name: Top issues | ||
| on: | ||
| schedule: | ||
| - cron: '0 0 */1 * *' | ||
| workflow_dispatch: | ||
| jobs: | ||
| ShowAndLabelTopIssues: | ||
| name: Display and label top issues | ||
| runs-on: ubuntu-latest | ||
| if: github.repository == 'PyGithub/PyGithub' | ||
| steps: | ||
| - name: Run top issues action | ||
| uses: rickstaa/top-issues-action@7e8dda5d5ae3087670f9094b9724a9a091fc3ba1 # v1.3.101 | ||
| env: | ||
| github_token: ${{ secrets.GITHUB_TOKEN }} | ||
| with: | ||
| label: true | ||
| dashboard: true | ||
| dashboard_show_total_reactions: true | ||
| top_issues: true | ||
| top_pull_requests: true | ||
| top_list_size: 10 |
| ############################ Copyrights and license ############################ | ||
| # # | ||
| # Copyright 2012 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2012 Zearin <zearin@gonk.net> # | ||
| # Copyright 2013 AKFish <akfish@gmail.com> # | ||
| # Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2014 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2016 Jannis Gebauer <ja.geb@me.com> # | ||
| # Copyright 2016 Peter Buckley <dx-pbuckley@users.noreply.github.com> # | ||
| # Copyright 2018 Wan Liuyang <tsfdye@gmail.com> # | ||
| # Copyright 2018 sfdye <tsfdye@gmail.com> # | ||
| # Copyright 2019 Steve Kowalik <steven@wedontsleep.org> # | ||
| # Copyright 2019 Wan Liuyang <tsfdye@gmail.com> # | ||
| # Copyright 2020 Steve Kowalik <steven@wedontsleep.org> # | ||
| # Copyright 2021 Mark Walker <mark.walker@realbuzz.com> # | ||
| # Copyright 2021 Steve Kowalik <steven@wedontsleep.org> # | ||
| # Copyright 2023 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2023 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2023 Trim21 <trim21.me@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # # | ||
| # This file is part of PyGithub. # | ||
| # http://pygithub.readthedocs.io/ # | ||
| # # | ||
| # PyGithub is free software: you can redistribute it and/or modify it under # | ||
| # the terms of the GNU Lesser General Public License as published by the Free # | ||
| # Software Foundation, either version 3 of the License, or (at your option) # | ||
| # any later version. # | ||
| # # | ||
| # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | ||
| # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | ||
| # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | ||
| # details. # | ||
| # # | ||
| # You should have received a copy of the GNU Lesser General Public License # | ||
| # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | ||
| # # | ||
| ################################################################################ | ||
| from __future__ import annotations | ||
| from datetime import datetime | ||
| from typing import Any | ||
| import github.GithubObject | ||
| import github.NamedUser | ||
| from github.GithubObject import Attribute, CompletableGithubObject, NotSet | ||
| class DiscussionBase(CompletableGithubObject): | ||
| """ | ||
| This class represents a the shared attributes between RepositoryDiscussion and TeamDiscussion | ||
| https://docs.github.com/en/graphql/reference/objects#discussion | ||
| https://docs.github.com/en/rest/reference/teams#discussions | ||
| """ | ||
| def _initAttributes(self) -> None: | ||
| self._author: Attribute[github.NamedUser.NamedUser | None] = NotSet | ||
| self._body: Attribute[str] = NotSet | ||
| self._body_html: Attribute[str] = NotSet | ||
| self._created_at: Attribute[datetime] = NotSet | ||
| self._last_edited_at: Attribute[datetime] = NotSet | ||
| self._number: Attribute[int] = NotSet | ||
| self._title: Attribute[str] = NotSet | ||
| self._updated_at: Attribute[datetime] = NotSet | ||
| self._url: Attribute[str] = NotSet | ||
| def __repr__(self) -> str: | ||
| return self.get__repr__({"number": self._number.value, "title": self._title.value}) | ||
| @property | ||
| def author(self) -> github.NamedUser.NamedUser | None: | ||
| self._completeIfNotSet(self._author) | ||
| return self._author.value | ||
| @property | ||
| def body(self) -> str: | ||
| self._completeIfNotSet(self._body) | ||
| return self._body.value | ||
| @property | ||
| def body_html(self) -> str: | ||
| self._completeIfNotSet(self._body_html) | ||
| return self._body_html.value | ||
| @property | ||
| def created_at(self) -> datetime: | ||
| self._completeIfNotSet(self._created_at) | ||
| return self._created_at.value | ||
| @property | ||
| def last_edited_at(self) -> datetime: | ||
| self._completeIfNotSet(self._last_edited_at) | ||
| return self._last_edited_at.value | ||
| @property | ||
| def number(self) -> int: | ||
| self._completeIfNotSet(self._number) | ||
| return self._number.value | ||
| @property | ||
| def title(self) -> str: | ||
| self._completeIfNotSet(self._title) | ||
| return self._title.value | ||
| @property | ||
| def updated_at(self) -> datetime: | ||
| self._completeIfNotSet(self._updated_at) | ||
| return self._updated_at.value | ||
| @property | ||
| def url(self) -> str: | ||
| self._completeIfNotSet(self._url) | ||
| return self._url.value | ||
| def _useAttributes(self, attributes: dict[str, Any]) -> None: | ||
| if "author" in attributes: # pragma no branch | ||
| self._author = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["author"]) | ||
| if "body" in attributes: # pragma no branch | ||
| self._body = self._makeStringAttribute(attributes["body"]) | ||
| if "body_html" in attributes: # pragma no branch | ||
| self._body_html = self._makeStringAttribute(attributes["body_html"]) | ||
| if "created_at" in attributes: # pragma no branch | ||
| self._created_at = self._makeDatetimeAttribute(attributes["created_at"]) | ||
| if "last_edited_at" in attributes: # pragma no branch | ||
| self._last_edited_at = self._makeDatetimeAttribute(attributes["last_edited_at"]) | ||
| if "number" in attributes: # pragma no branch | ||
| self._number = self._makeIntAttribute(attributes["number"]) | ||
| if "title" in attributes: | ||
| self._title = self._makeStringAttribute(attributes["title"]) | ||
| if "updated_at" in attributes: # pragma no branch | ||
| self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"]) | ||
| if "url" in attributes: # pragma no branch | ||
| self._url = self._makeStringAttribute(attributes["url"]) |
| ############################ Copyrights and license ############################ | ||
| # # | ||
| # Copyright 2012 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2012 Zearin <zearin@gonk.net> # | ||
| # Copyright 2013 AKFish <akfish@gmail.com> # | ||
| # Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2014 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2016 Jannis Gebauer <ja.geb@me.com> # | ||
| # Copyright 2016 Peter Buckley <dx-pbuckley@users.noreply.github.com> # | ||
| # Copyright 2018 Wan Liuyang <tsfdye@gmail.com> # | ||
| # Copyright 2018 sfdye <tsfdye@gmail.com> # | ||
| # Copyright 2019 Steve Kowalik <steven@wedontsleep.org> # | ||
| # Copyright 2019 Wan Liuyang <tsfdye@gmail.com> # | ||
| # Copyright 2020 Steve Kowalik <steven@wedontsleep.org> # | ||
| # Copyright 2021 Mark Walker <mark.walker@realbuzz.com> # | ||
| # Copyright 2021 Steve Kowalik <steven@wedontsleep.org> # | ||
| # Copyright 2023 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2023 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2023 Trim21 <trim21.me@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # # | ||
| # This file is part of PyGithub. # | ||
| # http://pygithub.readthedocs.io/ # | ||
| # # | ||
| # PyGithub is free software: you can redistribute it and/or modify it under # | ||
| # the terms of the GNU Lesser General Public License as published by the Free # | ||
| # Software Foundation, either version 3 of the License, or (at your option) # | ||
| # any later version. # | ||
| # # | ||
| # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | ||
| # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | ||
| # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | ||
| # details. # | ||
| # # | ||
| # You should have received a copy of the GNU Lesser General Public License # | ||
| # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | ||
| # # | ||
| ################################################################################ | ||
| from __future__ import annotations | ||
| from datetime import datetime | ||
| from typing import Any | ||
| import github.GithubObject | ||
| import github.NamedUser | ||
| from github.GithubObject import Attribute, CompletableGithubObject, NotSet | ||
| class DiscussionCommentBase(CompletableGithubObject): | ||
| """ | ||
| This class represents a the shared attributes between RepositoryDiscussionComment and TeamDiscussionComment | ||
| https://docs.github.com/en/graphql/reference/objects#discussioncomment | ||
| https://docs.github.com/de/rest/teams/discussion-comments | ||
| """ | ||
| def _initAttributes(self) -> None: | ||
| self._author: Attribute[github.NamedUser.NamedUser | None] = NotSet | ||
| self._body: Attribute[str] = NotSet | ||
| self._body_html: Attribute[str] = NotSet | ||
| self._created_at: Attribute[datetime] = NotSet | ||
| self._html_url: Attribute[str] = NotSet | ||
| self._last_edited_at: Attribute[datetime] = NotSet | ||
| self._node_id: Attribute[str] = NotSet | ||
| self._updated_at: Attribute[datetime] = NotSet | ||
| self._url: Attribute[str] = NotSet | ||
| def __repr__(self) -> str: | ||
| return self.get__repr__({"node_id": self._node_id.value}) | ||
| @property | ||
| def author(self) -> github.NamedUser.NamedUser | None: | ||
| self._completeIfNotSet(self._author) | ||
| return self._author.value | ||
| @property | ||
| def body(self) -> str: | ||
| self._completeIfNotSet(self._body) | ||
| return self._body.value | ||
| @property | ||
| def body_html(self) -> str: | ||
| self._completeIfNotSet(self._body_html) | ||
| return self._body_html.value | ||
| @property | ||
| def created_at(self) -> datetime: | ||
| self._completeIfNotSet(self._created_at) | ||
| return self._created_at.value | ||
| @property | ||
| def html_url(self) -> str: | ||
| self._completeIfNotSet(self._html_url) | ||
| return self._html_url.value | ||
| @property | ||
| def last_edited_at(self) -> datetime: | ||
| self._completeIfNotSet(self._last_edited_at) | ||
| return self._last_edited_at.value | ||
| @property | ||
| def node_id(self) -> str: | ||
| self._completeIfNotSet(self._node_id) | ||
| return self._node_id.value | ||
| @property | ||
| def updated_at(self) -> datetime: | ||
| self._completeIfNotSet(self._updated_at) | ||
| return self._updated_at.value | ||
| @property | ||
| def url(self) -> str: | ||
| self._completeIfNotSet(self._url) | ||
| return self._url.value | ||
| def _useAttributes(self, attributes: dict[str, Any]) -> None: | ||
| if "author" in attributes: # pragma no branch | ||
| self._author = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["author"]) | ||
| if "body" in attributes: # pragma no branch | ||
| self._body = self._makeStringAttribute(attributes["body"]) | ||
| if "body_html" in attributes: # pragma no branch | ||
| self._body_html = self._makeStringAttribute(attributes["body_html"]) | ||
| if "created_at" in attributes: # pragma no branch | ||
| self._created_at = self._makeDatetimeAttribute(attributes["created_at"]) | ||
| if "html_url" in attributes: # pragma no branch | ||
| self._html_url = self._makeStringAttribute(attributes["html_url"]) | ||
| if "last_edited_at" in attributes: # pragma no branch | ||
| self._last_edited_at = self._makeDatetimeAttribute(attributes["last_edited_at"]) | ||
| if "node_id" in attributes: # pragma no branch | ||
| self._node_id = self._makeStringAttribute(attributes["node_id"]) | ||
| if "updated_at" in attributes: # pragma no branch | ||
| self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"]) | ||
| if "url" in attributes: # pragma no branch | ||
| self._url = self._makeStringAttribute(attributes["url"]) |
| ############################ Copyrights and license ############################ | ||
| # # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
| # This file is part of PyGithub. # | ||
| # http://pygithub.readthedocs.io/ # | ||
| # # | ||
| # PyGithub is free software: you can redistribute it and/or modify it under # | ||
| # the terms of the GNU Lesser General Public License as published by the Free # | ||
| # Software Foundation, either version 3 of the License, or (at your option) # | ||
| # any later version. # | ||
| # # | ||
| # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | ||
| # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | ||
| # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | ||
| # details. # | ||
| # # | ||
| # You should have received a copy of the GNU Lesser General Public License # | ||
| # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | ||
| # # | ||
| ################################################################################ | ||
| from __future__ import annotations | ||
| from typing import TYPE_CHECKING, Any | ||
| import github | ||
| import github.Label | ||
| import github.NamedUser | ||
| import github.Reaction | ||
| import github.Repository | ||
| import github.RepositoryDiscussionCategory | ||
| import github.RepositoryDiscussionComment | ||
| from github.DiscussionBase import DiscussionBase | ||
| from github.GithubObject import ( | ||
| Attribute, | ||
| GraphQlObject, | ||
| NotSet, | ||
| as_rest_api_attributes, | ||
| as_rest_api_attributes_list, | ||
| is_undefined, | ||
| ) | ||
| from github.PaginatedList import PaginatedList | ||
| if TYPE_CHECKING: | ||
| from github.Label import Label | ||
| from github.NamedUser import NamedUser | ||
| from github.Reaction import Reaction | ||
| from github.Repository import Repository | ||
| from github.RepositoryDiscussionCategory import RepositoryDiscussionCategory | ||
| from github.RepositoryDiscussionComment import RepositoryDiscussionComment | ||
| class RepositoryDiscussion(GraphQlObject, DiscussionBase): | ||
| """ | ||
| This class represents GraphQL Discussion. | ||
| The reference can be found here | ||
| https://docs.github.com/en/graphql/reference/objects#discussion | ||
| """ | ||
| def _initAttributes(self) -> None: | ||
| super()._initAttributes() | ||
| self._answer: Attribute[RepositoryDiscussionComment | None] = NotSet | ||
| self._body_text: Attribute[str] = NotSet | ||
| self._category: Attribute[RepositoryDiscussionCategory] = NotSet | ||
| self._comments_page = None | ||
| self._database_id: Attribute[int] = NotSet | ||
| self._editor: Attribute[NamedUser] = NotSet | ||
| self._id: Attribute[str] = NotSet | ||
| self._labels_page = None | ||
| self._reactions_page = None | ||
| self._repository: Attribute[Repository] = NotSet | ||
| @property | ||
| def answer(self) -> RepositoryDiscussionComment | None: | ||
| return self._answer.value | ||
| @property | ||
| def body_text(self) -> str: | ||
| return self._body_text.value | ||
| @property | ||
| def category(self) -> RepositoryDiscussionCategory: | ||
| return self._category.value | ||
| @property | ||
| def database_id(self) -> int: | ||
| return self._database_id.value | ||
| @property | ||
| def editor(self) -> NamedUser: | ||
| return self._editor.value | ||
| @property | ||
| def id(self) -> str: | ||
| return self._id.value | ||
| @property | ||
| def node_id(self) -> str: | ||
| return self.id | ||
| @property | ||
| def repository(self) -> Repository: | ||
| return self._repository.value | ||
| def get_comments(self, comment_graphql_schema: str) -> PaginatedList[RepositoryDiscussionComment]: | ||
| if self._comments_page is not None: | ||
| return PaginatedList( | ||
| github.RepositoryDiscussionComment.RepositoryDiscussionComment, | ||
| self._requester, | ||
| firstData=self._comments_page, | ||
| firstHeaders={}, | ||
| ) | ||
| if is_undefined(self._id): | ||
| raise RuntimeError("Retrieving discussion comments requires the discussion field 'id'") | ||
| if not comment_graphql_schema.startswith("\n"): | ||
| comment_graphql_schema = f" {comment_graphql_schema} " | ||
| query = ( | ||
| """ | ||
| query Q($discussionId: ID!, $first: Int, $last: Int, $before: String, $after: String) { | ||
| node(id: $discussionId) { | ||
| ... on Discussion { | ||
| comments(first: $first, last: $last, before: $before, after: $after) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes {""" | ||
| + comment_graphql_schema | ||
| + """} | ||
| } | ||
| } | ||
| } | ||
| }""" | ||
| ) | ||
| variables = {"discussionId": self.node_id} | ||
| return PaginatedList( | ||
| github.RepositoryDiscussionComment.RepositoryDiscussionComment, | ||
| self._requester, | ||
| graphql_query=query, | ||
| graphql_variables=variables, | ||
| list_item=["node", "comments"], | ||
| ) | ||
| def get_labels(self) -> PaginatedList[Label]: | ||
| if self._labels_page is None: | ||
| raise RuntimeError("Fetching labels not implemented") | ||
| return PaginatedList(github.Label.Label, self._requester, firstData=self._labels_page, firstHeaders={}) | ||
| def get_reactions(self) -> PaginatedList[Reaction]: | ||
| if self._reactions_page is None: | ||
| raise RuntimeError("Fetching reactions not implemented") | ||
| return PaginatedList(github.Reaction.Reaction, self._requester, firstData=self._reactions_page, firstHeaders={}) | ||
| def add_comment( | ||
| self, body: str, reply_to: RepositoryDiscussionComment | str | None = None, output_schema: str = "id" | ||
| ) -> RepositoryDiscussionComment: | ||
| reply_to_id = ( | ||
| reply_to.id | ||
| if isinstance(reply_to, github.RepositoryDiscussionComment.RepositoryDiscussionComment) | ||
| else reply_to | ||
| ) | ||
| if not output_schema.startswith("\n"): | ||
| output_schema = f" {output_schema} " | ||
| variables = {"body": body, "discussionId": self.id, "replyToId": reply_to_id} | ||
| return self._requester.graphql_named_mutation_class( | ||
| "addDiscussionComment", | ||
| NotSet.remove_unset_items(variables), | ||
| f"comment {{{output_schema}}}", | ||
| "comment", | ||
| github.RepositoryDiscussionComment.RepositoryDiscussionComment, | ||
| ) | ||
| def _useAttributes(self, attributes: dict[str, Any]) -> None: | ||
| # super class is a REST API GithubObject, attributes are coming from GraphQL | ||
| super()._useAttributes(as_rest_api_attributes(attributes)) | ||
| if "answer" in attributes: # pragma no branch | ||
| self._answer = self._makeClassAttribute( | ||
| github.RepositoryDiscussionComment.RepositoryDiscussionComment, attributes["answer"] | ||
| ) | ||
| if "bodyText" in attributes: # pragma no branch | ||
| self._body_text = self._makeStringAttribute(attributes["bodyText"]) | ||
| if "category" in attributes: # pragma no branch | ||
| self._category = self._makeClassAttribute( | ||
| github.RepositoryDiscussionCategory.RepositoryDiscussionCategory, attributes["category"] | ||
| ) | ||
| if "comments" in attributes: # pragma no branch | ||
| # comments are GraphQL API objects | ||
| self._comments_page = attributes["comments"]["nodes"] | ||
| if "databaseId" in attributes: # pragma no branch | ||
| self._database_id = self._makeIntAttribute(attributes["databaseId"]) | ||
| if "editor" in attributes: # pragma no branch | ||
| self._editor = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["editor"]) | ||
| if "id" in attributes: # pragma no branch | ||
| self._id = self._makeStringAttribute(attributes["id"]) | ||
| if "labels" in attributes: # pragma no branch | ||
| # labels are REST API objects | ||
| self._labels_page = as_rest_api_attributes_list(attributes["labels"]["nodes"]) # type: ignore | ||
| if "reactions" in attributes: # pragma no branch | ||
| # reactions are REST API objects | ||
| self._reactions_page = as_rest_api_attributes_list(attributes["reactions"]["nodes"]) # type: ignore | ||
| if "repository" in attributes: # pragma no branch | ||
| self._repository = self._makeClassAttribute( | ||
| github.Repository.Repository, as_rest_api_attributes(attributes["repository"]) | ||
| ) |
| ############################ Copyrights and license ############################ | ||
| # # | ||
| # Copyright 2012 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2012 Zearin <zearin@gonk.net> # | ||
| # Copyright 2013 AKFish <akfish@gmail.com> # | ||
| # Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2014 Vincent Jacques <vincent@vincent-jacques.net> # | ||
| # Copyright 2016 Jannis Gebauer <ja.geb@me.com> # | ||
| # Copyright 2016 Peter Buckley <dx-pbuckley@users.noreply.github.com> # | ||
| # Copyright 2018 Wan Liuyang <tsfdye@gmail.com> # | ||
| # Copyright 2018 sfdye <tsfdye@gmail.com> # | ||
| # Copyright 2019 Steve Kowalik <steven@wedontsleep.org> # | ||
| # Copyright 2019 Wan Liuyang <tsfdye@gmail.com> # | ||
| # Copyright 2020 Steve Kowalik <steven@wedontsleep.org> # | ||
| # Copyright 2020 Victor Zeng <zacker150@users.noreply.github.com> # | ||
| # Copyright 2022 Eric Nieuwland <eric.nieuwland@gmail.com> # | ||
| # Copyright 2023 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2023 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2023 Trim21 <trim21.me@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # # | ||
| # This file is part of PyGithub. # | ||
| # http://pygithub.readthedocs.io/ # | ||
| # # | ||
| # PyGithub is free software: you can redistribute it and/or modify it under # | ||
| # the terms of the GNU Lesser General Public License as published by the Free # | ||
| # Software Foundation, either version 3 of the License, or (at your option) # | ||
| # any later version. # | ||
| # # | ||
| # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | ||
| # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | ||
| # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | ||
| # details. # | ||
| # # | ||
| # You should have received a copy of the GNU Lesser General Public License # | ||
| # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | ||
| # # | ||
| ################################################################################ | ||
| from __future__ import annotations | ||
| from datetime import datetime | ||
| from typing import TYPE_CHECKING, Any | ||
| import github.Reaction | ||
| from github.GithubObject import Attribute, GraphQlObject, NonCompletableGithubObject, NotSet, as_rest_api_attributes | ||
| if TYPE_CHECKING: | ||
| from github.Repository import Repository | ||
| class RepositoryDiscussionCategory(GraphQlObject, NonCompletableGithubObject): | ||
| """ | ||
| This class represents GraphQL DiscussionCategory. | ||
| The reference can be found here | ||
| https://docs.github.com/en/graphql/reference/objects#discussioncategory | ||
| """ | ||
| def _initAttributes(self) -> None: | ||
| self._created_at: Attribute[datetime] = NotSet | ||
| self._description: Attribute[str] = NotSet | ||
| self._emoji: Attribute[str] = NotSet | ||
| self._emoji_html: Attribute[str] = NotSet | ||
| self._id: Attribute[str] = NotSet | ||
| self._is_answerable: Attribute[bool] = NotSet | ||
| self._name: Attribute[str] = NotSet | ||
| self._repository: Attribute[Repository] = NotSet | ||
| self._slug: Attribute[str] = NotSet | ||
| self._updated_at: Attribute[datetime] = NotSet | ||
| @property | ||
| def created_at(self) -> datetime: | ||
| return self._created_at.value | ||
| @property | ||
| def description(self) -> str: | ||
| return self._description.value | ||
| @property | ||
| def emoji(self) -> str: | ||
| return self._emoji.value | ||
| @property | ||
| def emoji_html(self) -> str: | ||
| return self._emoji_html.value | ||
| @property | ||
| def id(self) -> str: | ||
| return self._id.value | ||
| @property | ||
| def node_id(self) -> str: | ||
| return self.id | ||
| @property | ||
| def is_answerable(self) -> bool: | ||
| return self._is_answerable.value | ||
| @property | ||
| def name(self) -> str: | ||
| return self._name.value | ||
| @property | ||
| def repository(self) -> Repository: | ||
| return self._repository.value | ||
| @property | ||
| def slug(self) -> str: | ||
| return self._slug.value | ||
| @property | ||
| def updated_at(self) -> datetime: | ||
| return self._updated_at.value | ||
| def _useAttributes(self, attributes: dict[str, Any]) -> None: | ||
| if "createdAt" in attributes: # pragma no branch | ||
| self._created_at = self._makeDatetimeAttribute(attributes["createdAt"]) | ||
| if "description" in attributes: # pragma no branch | ||
| self._description = self._makeStringAttribute(attributes["description"]) | ||
| if "emoji" in attributes: # pragma no branch | ||
| self._emoji = self._makeStringAttribute(attributes["emoji"]) | ||
| if "emojiHTML" in attributes: # pragma no branch | ||
| self._emoji_html = self._makeStringAttribute(attributes["emojiHTML"]) | ||
| if "id" in attributes: # pragma no branch | ||
| self._id = self._makeStringAttribute(attributes["id"]) | ||
| if "isAnswerable" in attributes: # pragma no branch | ||
| self._is_answerable = self._makeBoolAttribute(attributes["isAnswerable"]) | ||
| if "name" in attributes: # pragma no branch | ||
| self._name = self._makeStringAttribute(attributes["name"]) | ||
| if "repository" in attributes: # pragma no branch | ||
| # repository is a REST API object | ||
| self._repository = self._makeClassAttribute( | ||
| github.Repository.Repository, as_rest_api_attributes(attributes["repository"]) | ||
| ) | ||
| if "slug" in attributes: # pragma no branch | ||
| self._slug = self._makeStringAttribute(attributes["slug"]) | ||
| if "updatedAt" in attributes: # pragma no branch | ||
| self._updated_at = self._makeDatetimeAttribute(attributes["updatedAt"]) |
| ############################ Copyrights and license ############################ | ||
| # # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
| # This file is part of PyGithub. # | ||
| # http://pygithub.readthedocs.io/ # | ||
| # # | ||
| # PyGithub is free software: you can redistribute it and/or modify it under # | ||
| # the terms of the GNU Lesser General Public License as published by the Free # | ||
| # Software Foundation, either version 3 of the License, or (at your option) # | ||
| # any later version. # | ||
| # # | ||
| # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | ||
| # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | ||
| # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | ||
| # details. # | ||
| # # | ||
| # You should have received a copy of the GNU Lesser General Public License # | ||
| # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | ||
| # # | ||
| ################################################################################ | ||
| from __future__ import annotations | ||
| from typing import TYPE_CHECKING, Any | ||
| import github.NamedUser | ||
| import github.Reaction | ||
| from github.DiscussionCommentBase import DiscussionCommentBase | ||
| from github.GithubObject import ( | ||
| Attribute, | ||
| GraphQlObject, | ||
| NotSet, | ||
| as_rest_api_attributes, | ||
| as_rest_api_attributes_list, | ||
| is_defined, | ||
| ) | ||
| from github.PaginatedList import PaginatedList | ||
| if TYPE_CHECKING: | ||
| from github.NamedUser import NamedUser | ||
| from github.Reaction import Reaction | ||
| from github.RepositoryDiscussion import RepositoryDiscussion | ||
| class RepositoryDiscussionComment(GraphQlObject, DiscussionCommentBase): | ||
| """ | ||
| This class represents GraphQL DiscussionComment. | ||
| The reference can be found here | ||
| https://docs.github.com/en/graphql/reference/objects#discussioncomment | ||
| """ | ||
| def _initAttributes(self) -> None: | ||
| super()._initAttributes() | ||
| self._body_text: Attribute[str] = NotSet | ||
| self._database_id: Attribute[int] = NotSet | ||
| self._discussion: Attribute[RepositoryDiscussion] | ||
| self._editor: Attribute[NamedUser] = NotSet | ||
| self._id: Attribute[str] = NotSet | ||
| self._reactions_page = None | ||
| self._replies_page = None | ||
| @property | ||
| def body_text(self) -> str: | ||
| return self._body_text.value | ||
| @property | ||
| def database_id(self) -> int: | ||
| return self._database_id.value | ||
| @property | ||
| def discussion(self) -> RepositoryDiscussion: | ||
| return self._discussion.value | ||
| @property | ||
| def editor(self) -> NamedUser: | ||
| return self._editor.value | ||
| @property | ||
| def id(self) -> str: | ||
| return self._id.value | ||
| @property | ||
| def node_id(self) -> str: | ||
| if is_defined(self._node_id): | ||
| return super().node_id | ||
| return self.id | ||
| def get_reactions(self) -> PaginatedList[Reaction]: | ||
| if self._reactions_page is None: | ||
| raise RuntimeError("Fetching reactions not implemented") | ||
| return PaginatedList(github.Reaction.Reaction, self._requester, firstData=self._reactions_page, firstHeaders={}) | ||
| def get_replies(self) -> PaginatedList[RepositoryDiscussionComment]: | ||
| if self._replies_page is None: | ||
| raise RuntimeError("Fetching replies not implemented") | ||
| return PaginatedList( | ||
| RepositoryDiscussionComment, self._requester, firstData=self._replies_page, firstHeaders={} | ||
| ) | ||
| def edit(self, body: str, output_schema: str = "id") -> RepositoryDiscussionComment: | ||
| if not output_schema.startswith("\n"): | ||
| output_schema = f" {output_schema} " | ||
| return self._requester.graphql_named_mutation_class( | ||
| "updateDiscussionComment", | ||
| {"commentId": self.node_id, "body": body}, | ||
| f"comment {{{output_schema}}}", | ||
| "comment", | ||
| github.RepositoryDiscussionComment.RepositoryDiscussionComment, | ||
| ) | ||
| def delete(self, output_schema: str = "id") -> RepositoryDiscussionComment: | ||
| if not output_schema.startswith("\n"): | ||
| output_schema = f" {output_schema} " | ||
| return self._requester.graphql_named_mutation_class( | ||
| "deleteDiscussionComment", | ||
| {"id": self.id}, | ||
| f"comment {{{output_schema}}}", | ||
| "comment", | ||
| github.RepositoryDiscussionComment.RepositoryDiscussionComment, | ||
| ) | ||
| def _useAttributes(self, attributes: dict[str, Any]) -> None: | ||
| # super class is a REST API GithubObject, attributes are coming from GraphQL | ||
| super()._useAttributes(as_rest_api_attributes(attributes)) | ||
| if "bodyText" in attributes: # pragma no branch | ||
| self._body_text = self._makeStringAttribute(attributes["bodyText"]) | ||
| if "databaseId" in attributes: # pragma no branch | ||
| self._database_id = self._makeIntAttribute(attributes["databaseId"]) | ||
| if "discussion" in attributes: # pragma no branch | ||
| # RepositoryDiscussion is a GraphQL API object | ||
| self._discussion = self._makeClassAttribute( | ||
| github.RepositoryDiscussion.RepositoryDiscussion, attributes["discussion"] | ||
| ) | ||
| if "editor" in attributes: # pragma no branch | ||
| # NamedUser is a REST API object | ||
| self._editor = self._makeClassAttribute( | ||
| github.NamedUser.NamedUser, as_rest_api_attributes(attributes["editor"]) | ||
| ) | ||
| if "id" in attributes: # pragma no branch | ||
| self._id = self._makeStringAttribute(attributes["id"]) | ||
| if "reactions" in attributes: # pragma no branch | ||
| # reactions are REST API objects | ||
| self._reactions_page = as_rest_api_attributes_list(attributes["reactions"]["nodes"]) # type: ignore | ||
| if "replies" in attributes: # pragma no branch | ||
| # replies are GraphQL API objects | ||
| self._replies_page = attributes["replies"]["nodes"] |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /user/memberships/orgs | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Mon, 09 Sep 2024 14:56:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"64a96e0eaa998b8a898ced522b64494c065bb32b4c0768d689b9b98b2fa849c1"'), ('X-OAuth-Scopes', 'gist, read:org, repo, workflow'), ('X-Accepted-OAuth-Scopes', 'admin:org, read:org, repo, user, write:org'), ('x-oauth-client-id', '178c6fc778ccc68e1d6a'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4977'), ('X-RateLimit-Reset', '1725895359'), ('X-RateLimit-Used', '23'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '2721:3E994B:103429F2:106C9200:66DF0C83')] | ||
| [{"url":"https://api.github.com/orgs/aneyem-github/memberships/eduramirezh","state":"active","role":"member","organization_url":"https://api.github.com/orgs/aneyem-github","user":{"login":"eduramirezh","id":1679647,"node_id":"MDQ6VXNlcjE2Nzk2NDc=","avatar_url":"https://avatars.githubusercontent.com/u/1679647?v=4","gravatar_id":"","url":"https://api.github.com/users/eduramirezh","html_url":"https://github.com/eduramirezh","followers_url":"https://api.github.com/users/eduramirezh/followers","following_url":"https://api.github.com/users/eduramirezh/following{/other_user}","gists_url":"https://api.github.com/users/eduramirezh/gists{/gist_id}","starred_url":"https://api.github.com/users/eduramirezh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eduramirezh/subscriptions","organizations_url":"https://api.github.com/users/eduramirezh/orgs","repos_url":"https://api.github.com/users/eduramirezh/repos","events_url":"https://api.github.com/users/eduramirezh/events{/privacy}","received_events_url":"https://api.github.com/users/eduramirezh/received_events","type":"User","site_admin":false},"organization":{"login":"aneyem-github","id":1649871,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2NDk4NzE=","url":"https://api.github.com/orgs/aneyem-github","repos_url":"https://api.github.com/orgs/aneyem-github/repos","events_url":"https://api.github.com/orgs/aneyem-github/events","hooks_url":"https://api.github.com/orgs/aneyem-github/hooks","issues_url":"https://api.github.com/orgs/aneyem-github/issues","members_url":"https://api.github.com/orgs/aneyem-github/members{/member}","public_members_url":"https://api.github.com/orgs/aneyem-github/public_members{/member}","avatar_url":"https://avatars.githubusercontent.com/u/1649871?v=4","description":null}},{"url":"https://api.github.com/orgs/nko4/memberships/eduramirezh","state":"active","role":"member","organization_url":"https://api.github.com/orgs/nko4","user":{"login":"eduramirezh","id":1679647,"node_id":"MDQ6VXNlcjE2Nzk2NDc=","avatar_url":"https://avatars.githubusercontent.com/u/1679647?v=4","gravatar_id":"","url":"https://api.github.com/users/eduramirezh","html_url":"https://github.com/eduramirezh","followers_url":"https://api.github.com/users/eduramirezh/followers","following_url":"https://api.github.com/users/eduramirezh/following{/other_user}","gists_url":"https://api.github.com/users/eduramirezh/gists{/gist_id}","starred_url":"https://api.github.com/users/eduramirezh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eduramirezh/subscriptions","organizations_url":"https://api.github.com/users/eduramirezh/orgs","repos_url":"https://api.github.com/users/eduramirezh/repos","events_url":"https://api.github.com/users/eduramirezh/events{/privacy}","received_events_url":"https://api.github.com/users/eduramirezh/received_events","type":"User","site_admin":false},"organization":{"login":"nko4","id":3877928,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM4Nzc5Mjg=","url":"https://api.github.com/orgs/nko4","repos_url":"https://api.github.com/orgs/nko4/repos","events_url":"https://api.github.com/orgs/nko4/events","hooks_url":"https://api.github.com/orgs/nko4/hooks","issues_url":"https://api.github.com/orgs/nko4/issues","members_url":"https://api.github.com/orgs/nko4/members{/member}","public_members_url":"https://api.github.com/orgs/nko4/public_members{/member}","avatar_url":"https://avatars.githubusercontent.com/u/3877928?v=4","description":null}},{"url":"https://api.github.com/orgs/geoservel/memberships/eduramirezh","state":"active","role":"admin","organization_url":"https://api.github.com/orgs/geoservel","user":{"login":"eduramirezh","id":1679647,"node_id":"MDQ6VXNlcjE2Nzk2NDc=","avatar_url":"https://avatars.githubusercontent.com/u/1679647?v=4","gravatar_id":"","url":"https://api.github.com/users/eduramirezh","html_url":"https://github.com/eduramirezh","followers_url":"https://api.github.com/users/eduramirezh/followers","following_url":"https://api.github.com/users/eduramirezh/following{/other_user}","gists_url":"https://api.github.com/users/eduramirezh/gists{/gist_id}","starred_url":"https://api.github.com/users/eduramirezh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eduramirezh/subscriptions","organizations_url":"https://api.github.com/users/eduramirezh/orgs","repos_url":"https://api.github.com/users/eduramirezh/repos","events_url":"https://api.github.com/users/eduramirezh/events{/privacy}","received_events_url":"https://api.github.com/users/eduramirezh/received_events","type":"User","site_admin":false},"organization":{"login":"geoservel","id":6774673,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY3NzQ2NzM=","url":"https://api.github.com/orgs/geoservel","repos_url":"https://api.github.com/orgs/geoservel/repos","events_url":"https://api.github.com/orgs/geoservel/events","hooks_url":"https://api.github.com/orgs/geoservel/hooks","issues_url":"https://api.github.com/orgs/geoservel/issues","members_url":"https://api.github.com/orgs/geoservel/members{/member}","public_members_url":"https://api.github.com/orgs/geoservel/public_members{/member}","avatar_url":"https://avatars.githubusercontent.com/u/6774673?v=4","description":null}},{"url":"https://api.github.com/orgs/iic2154-uc-cl/memberships/eduramirezh","state":"active","role":"member","organization_url":"https://api.github.com/orgs/iic2154-uc-cl","user":{"login":"eduramirezh","id":1679647,"node_id":"MDQ6VXNlcjE2Nzk2NDc=","avatar_url":"https://avatars.githubusercontent.com/u/1679647?v=4","gravatar_id":"","url":"https://api.github.com/users/eduramirezh","html_url":"https://github.com/eduramirezh","followers_url":"https://api.github.com/users/eduramirezh/followers","following_url":"https://api.github.com/users/eduramirezh/following{/other_user}","gists_url":"https://api.github.com/users/eduramirezh/gists{/gist_id}","starred_url":"https://api.github.com/users/eduramirezh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eduramirezh/subscriptions","organizations_url":"https://api.github.com/users/eduramirezh/orgs","repos_url":"https://api.github.com/users/eduramirezh/repos","events_url":"https://api.github.com/users/eduramirezh/events{/privacy}","received_events_url":"https://api.github.com/users/eduramirezh/received_events","type":"User","site_admin":false},"organization":{"login":"iic2154-uc-cl","id":7002324,"node_id":"MDEyOk9yZ2FuaXphdGlvbjcwMDIzMjQ=","url":"https://api.github.com/orgs/iic2154-uc-cl","repos_url":"https://api.github.com/orgs/iic2154-uc-cl/repos","events_url":"https://api.github.com/orgs/iic2154-uc-cl/events","hooks_url":"https://api.github.com/orgs/iic2154-uc-cl/hooks","issues_url":"https://api.github.com/orgs/iic2154-uc-cl/issues","members_url":"https://api.github.com/orgs/iic2154-uc-cl/members{/member}","public_members_url":"https://api.github.com/orgs/iic2154-uc-cl/public_members{/member}","avatar_url":"https://avatars.githubusercontent.com/u/7002324?v=4","description":""}},{"url":"https://api.github.com/orgs/nnodes/memberships/eduramirezh","state":"active","role":"member","organization_url":"https://api.github.com/orgs/nnodes","user":{"login":"eduramirezh","id":1679647,"node_id":"MDQ6VXNlcjE2Nzk2NDc=","avatar_url":"https://avatars.githubusercontent.com/u/1679647?v=4","gravatar_id":"","url":"https://api.github.com/users/eduramirezh","html_url":"https://github.com/eduramirezh","followers_url":"https://api.github.com/users/eduramirezh/followers","following_url":"https://api.github.com/users/eduramirezh/following{/other_user}","gists_url":"https://api.github.com/users/eduramirezh/gists{/gist_id}","starred_url":"https://api.github.com/users/eduramirezh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eduramirezh/subscriptions","organizations_url":"https://api.github.com/users/eduramirezh/orgs","repos_url":"https://api.github.com/users/eduramirezh/repos","events_url":"https://api.github.com/users/eduramirezh/events{/privacy}","received_events_url":"https://api.github.com/users/eduramirezh/received_events","type":"User","site_admin":false},"organization":{"login":"nnodes","id":12845538,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyODQ1NTM4","url":"https://api.github.com/orgs/nnodes","repos_url":"https://api.github.com/orgs/nnodes/repos","events_url":"https://api.github.com/orgs/nnodes/events","hooks_url":"https://api.github.com/orgs/nnodes/hooks","issues_url":"https://api.github.com/orgs/nnodes/issues","members_url":"https://api.github.com/orgs/nnodes/members{/member}","public_members_url":"https://api.github.com/orgs/nnodes/public_members{/member}","avatar_url":"https://avatars.githubusercontent.com/u/12845538?v=4","description":""}},{"url":"https://api.github.com/orgs/sushiclm/memberships/eduramirezh","state":"active","role":"admin","organization_url":"https://api.github.com/orgs/sushiclm","user":{"login":"eduramirezh","id":1679647,"node_id":"MDQ6VXNlcjE2Nzk2NDc=","avatar_url":"https://avatars.githubusercontent.com/u/1679647?v=4","gravatar_id":"","url":"https://api.github.com/users/eduramirezh","html_url":"https://github.com/eduramirezh","followers_url":"https://api.github.com/users/eduramirezh/followers","following_url":"https://api.github.com/users/eduramirezh/following{/other_user}","gists_url":"https://api.github.com/users/eduramirezh/gists{/gist_id}","starred_url":"https://api.github.com/users/eduramirezh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eduramirezh/subscriptions","organizations_url":"https://api.github.com/users/eduramirezh/orgs","repos_url":"https://api.github.com/users/eduramirezh/repos","events_url":"https://api.github.com/users/eduramirezh/events{/privacy}","received_events_url":"https://api.github.com/users/eduramirezh/received_events","type":"User","site_admin":false},"organization":{"login":"sushiclm","id":22522358,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNTIyMzU4","url":"https://api.github.com/orgs/sushiclm","repos_url":"https://api.github.com/orgs/sushiclm/repos","events_url":"https://api.github.com/orgs/sushiclm/events","hooks_url":"https://api.github.com/orgs/sushiclm/hooks","issues_url":"https://api.github.com/orgs/sushiclm/issues","members_url":"https://api.github.com/orgs/sushiclm/members{/member}","public_members_url":"https://api.github.com/orgs/sushiclm/public_members{/member}","avatar_url":"https://avatars.githubusercontent.com/u/22522358?v=4","description":null}}] |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n ... on Discussion {\n answer {\n author { login }\n body\n bodyHTML\n bodyText\n createdAt\n databaseId\n discussion { id }\n editor { login }\n id\n lastEditedAt\n updatedAt\n url\n }\n author { login }\n body\n bodyHTML\n bodyText\n category {\n createdAt\n description\n emoji\n emojiHTML\n id\n isAnswerable\n name\n repository { owner { login } name }\n slug\n updatedAt\n }\n comments(first: 10) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n id\n }\n }\n createdAt\n databaseId\n editor { login }\n id\n labels(first: 10) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n id\n name\n }\n }\n lastEditedAt\n number\n reactions(first: 10) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n id\n }\n }\n repository {\n owner { login }\n name\n }\n title\n updatedAt\n url\n }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 10:38:06 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4900'), ('X-RateLimit-Reset', '1726571100'), ('X-RateLimit-Used', '100'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FE8:23B8E4:7E3FE1:7F58C1:66E95C0D')] | ||
| {"data":{"node":{"answer":null,"author":{"login":"arunanandhan"},"body":"Is there an api way to search for a string in the current code in a repo?","bodyHTML":"<p dir=\"auto\">Is there an api way to search for a string in the current code in a repo?</p>","bodyText":"Is there an api way to search for a string in the current code in a repo?","category":{"createdAt":"2020-12-08T23:29:12Z","description":"Chat about anything and everything here","emoji":":speech_balloon:","emojiHTML":"<div>💬</div>","id":"MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYw","isAnswerable":false,"name":"General","repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"slug":"general","updatedAt":"2020-12-08T23:29:12Z"},"comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0yOVQxOTo1NzowMCswMjowMM4AU3Mg","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0yOVQxOTo1NzowMCswMjowMM4AU3Mg","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AU3Mg"}]},"createdAt":"2023-03-29T17:06:04Z","databaseId":5019203,"editor":null,"id":"D_kwDOADYVqs4ATJZD","labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"lastEditedAt":null,"number":2480,"reactions":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Is there a way to search if a string present in default branch?","updatedAt":"2023-03-30T16:18:59Z","url":"https://github.com/PyGithub/PyGithub/discussions/2480"}}} | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 10:46:13 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4986'), ('X-RateLimit-Reset', '1726571099'), ('X-RateLimit-Used', '14'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F3C:221185:24F04:25557:66E95DF5')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111} | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /users/PyGithub | ||
| {'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 10:46:30 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"465119d1ce50dcf055ebf9239f79701d2b350d57bbf6167bb01ef9090f200a35"'), ('Last-Modified', 'Wed, 08 Apr 2020 03:46:04 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', ''), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4985'), ('X-RateLimit-Reset', '1726571099'), ('X-RateLimit-Used', '15'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FB4:93EBB:19600:19AC7:66E95E06')] |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation Mutation($input: FollowOrganizationInput!) { followOrganization(input: $input) { organization { name } } }", "variables": {"input": {"organizationId": "O_kgDOAKxBpA"}}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 08:32:30 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4985'), ('X-RateLimit-Reset', '1726649567'), ('X-RateLimit-Used', '15'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FCF:3E9DF7:5C04D:5CF8C:66EA901E')] | ||
| {"data":{"followOrganization":{"organization":{"name":"PyGithub"}}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation Mutation($input: FollowOrganizationInput!) { followOrganization(input: $input) { organization { name } } }", "variables": {"input": {"organizationId": "O_kgDOAKxBpA"}}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 08:33:14 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4984'), ('X-RateLimit-Reset', '1726649567'), ('X-RateLimit-Used', '16'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F65:1B2122:68DCF:69F2E:66EA904A')] | ||
| {"data":{"followOrganization":{"organization":{"name":"PyGithub"}}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on Discussion { title }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:12:07 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4982'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '18'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FAB:3166F9:53E3E2:54CFDB:66E9C677')] | ||
| {"data":{"node":{"__typename":"Discussion","title":"Is there a way to search if a string present in default branch?"}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on Discussion { title }\n }\n }\n ", "variables": {"id": "D_abcdefgh"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:12:16 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4981'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '19'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FF2:3166F9:5409E6:54F641:66E9C680')] | ||
| {"data":{"node":null},"errors":[{"type":"NOT_FOUND","path":["node"],"locations":[{"line":3,"column":15}],"message":"Could not resolve to a node with the global id of 'D_abcdefgh'"}]} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on User { login }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:12:29 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4980'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '20'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F46:1ED26E:57A112:5890ED:66E9C68D')] | ||
| {"data":{"node":{"__typename":"Discussion"}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on Discussion { title }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:12:07 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4982'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '18'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FAB:3166F9:53E3E2:54CFDB:66E9C677')] | ||
| {"data":{"node":{"__typename":"Discussion","title":"Is there a way to search if a string present in default branch?"}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on Discussion { title }\n }\n }\n ", "variables": {"id": "D_abcdefgh"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:12:16 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4981'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '19'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FF2:3166F9:5409E6:54F641:66E9C680')] | ||
| {"data":{"node":null},"errors":[{"type":"NOT_FOUND","path":["node"],"locations":[{"line":3,"column":15}],"message":"Could not resolve to a node with the global id of 'D_abcdefgh'"}]} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on User { login }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:12:29 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4980'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '20'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F46:1ED26E:57A112:5890ED:66E9C68D')] | ||
| {"data":{"node":{"__typename":"Discussion"}}} |
Sorry, the diff of this file is too big to display
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($owner: String!, $name: String!) {\n repository(owner: $owner, name: $name) { url }\n }", "variables": {"owner": "PyGithub", "name": "PyGithub"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:26:35 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4979'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '21'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA1:2B9D7D:FDA0F:1007DB:66E9C9DA')] | ||
| {"data":{"repository":{"url":"https://github.com/PyGithub/PyGithub"}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) { ... on DiscussionComment { url } }\n }", "variables": {"id": "DC_kwDOADYVqs4AU3Mg"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:58:31 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4990'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '10'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F30:39A73C:87FC61:8965EC:66E9D157')] | ||
| {"data":{"node":{"url":"https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5468960"}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($owner: String!, $name: String!) {\n repository(owner: $owner, name: $name) { url }\n }", "variables": {"owner": "PyGithub", "name": "PyGithub"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 18:58:30 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4991'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '9'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F17:39A73C:87FB5E:8964DF:66E9D156')] | ||
| {"data":{"repository":{"url":"https://github.com/PyGithub/PyGithub"}}} |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 14:52:48 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"94888ce5a3d160469b34ae27aa79ff2642ab71edc8d18fa2c5e192dba4611de2"'), ('Last-Modified', 'Sun, 24 Mar 2024 11:25:21 GMT'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-accepted-github-permissions', 'metadata=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4986'), ('X-RateLimit-Reset', '1711294214'), ('X-RateLimit-Used', '14'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D022:1444A0:4E24293:4E97CA4:66003E40')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-03-24T11:25:21Z","pushed_at":"2024-03-24T14:24:51Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":15776,"stargazers_count":6627,"watchers_count":6627,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1703,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":282,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1703,"open_issues":282,"watchers":6627,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"network_count":1703,"subscribers_count":111} | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub/issues/1136 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 14:52:49 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"2c247e53efccb989fff0f942a0fdeca97bb8705c2124682f3b8c2e790d7b8370"'), ('Last-Modified', 'Sun, 24 Mar 2024 14:00:06 GMT'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-accepted-github-permissions', 'issues=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4985'), ('X-RateLimit-Reset', '1711294214'), ('X-RateLimit-Used', '15'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D032:1B371B:52B6395:53292C9:66003E41')] | ||
| {"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/events","html_url":"https://github.com/PyGithub/PyGithub/issues/1136","id":454822411,"node_id":"MDU6SXNzdWU0NTQ4MjI0MTE=","number":1136,"title":"Paginated list reversed only gives the first page of results backwards","user":{"login":"micahsteinberg","id":31256235,"node_id":"MDQ6VXNlcjMxMjU2MjM1","avatar_url":"https://avatars.githubusercontent.com/u/31256235?v=4","gravatar_id":"","url":"https://api.github.com/users/micahsteinberg","html_url":"https://github.com/micahsteinberg","followers_url":"https://api.github.com/users/micahsteinberg/followers","following_url":"https://api.github.com/users/micahsteinberg/following{/other_user}","gists_url":"https://api.github.com/users/micahsteinberg/gists{/gist_id}","starred_url":"https://api.github.com/users/micahsteinberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/micahsteinberg/subscriptions","organizations_url":"https://api.github.com/users/micahsteinberg/orgs","repos_url":"https://api.github.com/users/micahsteinberg/repos","events_url":"https://api.github.com/users/micahsteinberg/events{/privacy}","received_events_url":"https://api.github.com/users/micahsteinberg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2019-06-11T17:47:23Z","updated_at":"2024-03-24T14:00:06Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"When I do\r\n```\r\ng = Github(\"xxx\")\r\nrepo = g.get_repo(\"xxx\")\r\n\r\nfor comm in repo.get_commits(since=datetime).reversed:\r\n ....\r\n```\r\nit only goes through the most recent 30 results in reverse order.\r\n\r\nI was able to fix this with\r\n```\r\ndef reverse_github_results(paginated_list):\r\n for i in range(paginated_list.totalCount//30, -1, -1):\r\n page = paginated_list.get_page(i)\r\n page.reverse()\r\n for item in page:\r\n yield item\r\n```\r\nbut this possibly runs a bit slower and I thought I should let you guys know\r\n","closed_by":{"login":"stale[bot]","id":26384082,"node_id":"MDM6Qm90MjYzODQwODI=","avatar_url":"https://avatars.githubusercontent.com/in/1724?v=4","gravatar_id":"","url":"https://api.github.com/users/stale%5Bbot%5D","html_url":"https://github.com/apps/stale","followers_url":"https://api.github.com/users/stale%5Bbot%5D/followers","following_url":"https://api.github.com/users/stale%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/stale%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/stale%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stale%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/stale%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/stale%5Bbot%5D/repos","events_url":"https://api.github.com/users/stale%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/stale%5Bbot%5D/received_events","type":"Bot","site_admin":false},"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/reactions","total_count":7,"+1":7,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/timeline","performed_via_github_app":null,"state_reason":"reopened"} | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub/issues/1136/comments?per_page=3 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 14:52:49 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"57c5d41745d1850a5668491fc82543958ec801d97e5eeb55f7f8da49da691fce"'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=2>; rel="next", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=3>; rel="last"'), ('x-accepted-github-permissions', 'issues=read; pull_requests=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4984'), ('X-RateLimit-Reset', '1711294214'), ('X-RateLimit-Used', '16'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D034:C40A4:5108CDA:517C9AC:66003E41')] | ||
| [{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/520169504","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-520169504","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":520169504,"node_id":"MDEyOklzc3VlQ29tbWVudDUyMDE2OTUwNA==","user":{"login":"stale[bot]","id":26384082,"node_id":"MDM6Qm90MjYzODQwODI=","avatar_url":"https://avatars.githubusercontent.com/in/1724?v=4","gravatar_id":"","url":"https://api.github.com/users/stale%5Bbot%5D","html_url":"https://github.com/apps/stale","followers_url":"https://api.github.com/users/stale%5Bbot%5D/followers","following_url":"https://api.github.com/users/stale%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/stale%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/stale%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stale%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/stale%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/stale%5Bbot%5D/repos","events_url":"https://api.github.com/users/stale%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/stale%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2019-08-10T18:16:46Z","updated_at":"2019-08-10T18:16:46Z","author_association":"NONE","body":"This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.\n","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/520169504/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879739410","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-1879739410","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":1879739410,"node_id":"IC_kwDOADYVqs5wCowS","user":{"login":"engn33r","id":6261182,"node_id":"MDQ6VXNlcjYyNjExODI=","avatar_url":"https://avatars.githubusercontent.com/u/6261182?v=4","gravatar_id":"","url":"https://api.github.com/users/engn33r","html_url":"https://github.com/engn33r","followers_url":"https://api.github.com/users/engn33r/followers","following_url":"https://api.github.com/users/engn33r/following{/other_user}","gists_url":"https://api.github.com/users/engn33r/gists{/gist_id}","starred_url":"https://api.github.com/users/engn33r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/engn33r/subscriptions","organizations_url":"https://api.github.com/users/engn33r/orgs","repos_url":"https://api.github.com/users/engn33r/repos","events_url":"https://api.github.com/users/engn33r/events{/privacy}","received_events_url":"https://api.github.com/users/engn33r/received_events","type":"User","site_admin":false},"created_at":"2024-01-06T16:04:34Z","updated_at":"2024-01-06T16:04:34Z","author_association":"NONE","body":"This was still an issue with v2.1.1 but the fix above worked for me :+1:\r\n\r\nIt would be great if this could be fixed in the library itself, with an example showing reversed usage in the docs.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879739410/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879763065","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-1879763065","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":1879763065,"node_id":"IC_kwDOADYVqs5wCuh5","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"created_at":"2024-01-06T17:34:11Z","updated_at":"2024-01-06T17:36:10Z","author_association":"COLLABORATOR","body":"I'd be surprised this does not work, there are some unit tests that cover this. Maybe test data have to be recorded again. Reopening, contribution welcome.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879763065/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}] | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repositories/3544490/issues/1136/comments?per_page=3&page=2 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 14:52:50 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"2da0c87bcdd4e81333c2bcff3919dd02c1f530d83d1f8b34300ce6bd4fcaea47"'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=1>; rel="prev", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=3>; rel="next", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=3>; rel="last", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=1>; rel="first"'), ('x-accepted-github-permissions', 'issues=read; pull_requests=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4983'), ('X-RateLimit-Reset', '1711294214'), ('X-RateLimit-Used', '17'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D042:150D4C:539B908:540EA4A:66003E42')] | ||
| [{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2009839192","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-2009839192","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":2009839192,"node_id":"IC_kwDOADYVqs53y7ZY","user":{"login":"etiennnr","id":36542216,"node_id":"MDQ6VXNlcjM2NTQyMjE2","avatar_url":"https://avatars.githubusercontent.com/u/36542216?v=4","gravatar_id":"","url":"https://api.github.com/users/etiennnr","html_url":"https://github.com/etiennnr","followers_url":"https://api.github.com/users/etiennnr/followers","following_url":"https://api.github.com/users/etiennnr/following{/other_user}","gists_url":"https://api.github.com/users/etiennnr/gists{/gist_id}","starred_url":"https://api.github.com/users/etiennnr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/etiennnr/subscriptions","organizations_url":"https://api.github.com/users/etiennnr/orgs","repos_url":"https://api.github.com/users/etiennnr/repos","events_url":"https://api.github.com/users/etiennnr/events{/privacy}","received_events_url":"https://api.github.com/users/etiennnr/received_events","type":"User","site_admin":false},"created_at":"2024-03-20T15:24:15Z","updated_at":"2024-03-20T15:24:15Z","author_association":"NONE","body":"Can confirm this is still a problem for me, using version `1.59.1` though","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2009839192/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2011931389","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-2011931389","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":2011931389,"node_id":"IC_kwDOADYVqs5366L9","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T10:55:14Z","updated_at":"2024-03-21T10:55:14Z","author_association":"COLLABORATOR","body":"Can you confirm with latest release?","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2011931389/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2012384661","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-2012384661","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":2012384661,"node_id":"IC_kwDOADYVqs538o2V","user":{"login":"etiennnr","id":36542216,"node_id":"MDQ6VXNlcjM2NTQyMjE2","avatar_url":"https://avatars.githubusercontent.com/u/36542216?v=4","gravatar_id":"","url":"https://api.github.com/users/etiennnr","html_url":"https://github.com/etiennnr","followers_url":"https://api.github.com/users/etiennnr/followers","following_url":"https://api.github.com/users/etiennnr/following{/other_user}","gists_url":"https://api.github.com/users/etiennnr/gists{/gist_id}","starred_url":"https://api.github.com/users/etiennnr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/etiennnr/subscriptions","organizations_url":"https://api.github.com/users/etiennnr/orgs","repos_url":"https://api.github.com/users/etiennnr/repos","events_url":"https://api.github.com/users/etiennnr/events{/privacy}","received_events_url":"https://api.github.com/users/etiennnr/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T14:02:22Z","updated_at":"2024-03-21T14:02:22Z","author_association":"NONE","body":"Yes, Just tried with v.2.2.0 and got the same result\r\n\r\nHowever, my \"global\" `per_page` setting is set to 40. I tried setting it back to the default (30), and then it actually started from the last item of the `PaginatedList`! \r\n\r\nSo this actually seem to be somehow related to how the `reversed` algorithm deals with a different from the default `per_page` setting.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2012384661/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}] | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repositories/3544490/issues/1136/comments?per_page=3&page=3 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 14:52:50 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"96b8b7b7d4b0d49be94be5c2cc20e610609885e3e1f73c2d6458eb7d33286eb0"'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=2>; rel="prev", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=1>; rel="first"'), ('x-accepted-github-permissions', 'issues=read; pull_requests=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4982'), ('X-RateLimit-Reset', '1711294214'), ('X-RateLimit-Used', '18'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D046:1589B:4FB0A89:502315A:66003E42')] | ||
| [{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2016818677","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-2016818677","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":2016818677,"node_id":"IC_kwDOADYVqs54NjX1","user":{"login":"engn33r","id":6261182,"node_id":"MDQ6VXNlcjYyNjExODI=","avatar_url":"https://avatars.githubusercontent.com/u/6261182?v=4","gravatar_id":"","url":"https://api.github.com/users/engn33r","html_url":"https://github.com/engn33r","followers_url":"https://api.github.com/users/engn33r/followers","following_url":"https://api.github.com/users/engn33r/following{/other_user}","gists_url":"https://api.github.com/users/engn33r/gists{/gist_id}","starred_url":"https://api.github.com/users/engn33r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/engn33r/subscriptions","organizations_url":"https://api.github.com/users/engn33r/orgs","repos_url":"https://api.github.com/users/engn33r/repos","events_url":"https://api.github.com/users/engn33r/events{/privacy}","received_events_url":"https://api.github.com/users/engn33r/received_events","type":"User","site_admin":false},"created_at":"2024-03-24T13:58:57Z","updated_at":"2024-03-24T14:00:06Z","author_association":"NONE","body":"For reference, I did not set `per_page` so I was using the default of 30 when I encountered this issue. But I was testing on only one repo with over 30 issues. It could make sense to test with repos with different numbers of issues to see if that is a factor.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2016818677/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}] |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 16:03:09 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"c56d6987e79ad7fa7ea859c898ac3b1e58da00e27fbe97bffe433b5a5cbb515d"'), ('Last-Modified', 'Sun, 24 Mar 2024 11:25:21 GMT'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-accepted-github-permissions', 'metadata=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4993'), ('X-RateLimit-Reset', '1711299465'), ('X-RateLimit-Used', '7'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D998:19EC4F:5957305:59D4EDF:66004EBD')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-03-24T11:25:21Z","pushed_at":"2024-03-24T15:14:35Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":15796,"stargazers_count":6627,"watchers_count":6627,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1704,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":283,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1704,"open_issues":283,"watchers":6627,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"network_count":1704,"subscribers_count":111} | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub/issues/1136 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 16:03:10 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"2c247e53efccb989fff0f942a0fdeca97bb8705c2124682f3b8c2e790d7b8370"'), ('Last-Modified', 'Sun, 24 Mar 2024 14:00:06 GMT'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-accepted-github-permissions', 'issues=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4992'), ('X-RateLimit-Reset', '1711299465'), ('X-RateLimit-Used', '8'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D99E:7415A:C681C:C78A4:66004EBE')] | ||
| {"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/events","html_url":"https://github.com/PyGithub/PyGithub/issues/1136","id":454822411,"node_id":"MDU6SXNzdWU0NTQ4MjI0MTE=","number":1136,"title":"Paginated list reversed only gives the first page of results backwards","user":{"login":"micahsteinberg","id":31256235,"node_id":"MDQ6VXNlcjMxMjU2MjM1","avatar_url":"https://avatars.githubusercontent.com/u/31256235?v=4","gravatar_id":"","url":"https://api.github.com/users/micahsteinberg","html_url":"https://github.com/micahsteinberg","followers_url":"https://api.github.com/users/micahsteinberg/followers","following_url":"https://api.github.com/users/micahsteinberg/following{/other_user}","gists_url":"https://api.github.com/users/micahsteinberg/gists{/gist_id}","starred_url":"https://api.github.com/users/micahsteinberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/micahsteinberg/subscriptions","organizations_url":"https://api.github.com/users/micahsteinberg/orgs","repos_url":"https://api.github.com/users/micahsteinberg/repos","events_url":"https://api.github.com/users/micahsteinberg/events{/privacy}","received_events_url":"https://api.github.com/users/micahsteinberg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2019-06-11T17:47:23Z","updated_at":"2024-03-24T14:00:06Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"When I do\r\n```\r\ng = Github(\"xxx\")\r\nrepo = g.get_repo(\"xxx\")\r\n\r\nfor comm in repo.get_commits(since=datetime).reversed:\r\n ....\r\n```\r\nit only goes through the most recent 30 results in reverse order.\r\n\r\nI was able to fix this with\r\n```\r\ndef reverse_github_results(paginated_list):\r\n for i in range(paginated_list.totalCount//30, -1, -1):\r\n page = paginated_list.get_page(i)\r\n page.reverse()\r\n for item in page:\r\n yield item\r\n```\r\nbut this possibly runs a bit slower and I thought I should let you guys know\r\n","closed_by":{"login":"stale[bot]","id":26384082,"node_id":"MDM6Qm90MjYzODQwODI=","avatar_url":"https://avatars.githubusercontent.com/in/1724?v=4","gravatar_id":"","url":"https://api.github.com/users/stale%5Bbot%5D","html_url":"https://github.com/apps/stale","followers_url":"https://api.github.com/users/stale%5Bbot%5D/followers","following_url":"https://api.github.com/users/stale%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/stale%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/stale%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stale%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/stale%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/stale%5Bbot%5D/repos","events_url":"https://api.github.com/users/stale%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/stale%5Bbot%5D/received_events","type":"Bot","site_admin":false},"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/reactions","total_count":7,"+1":7,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136/timeline","performed_via_github_app":null,"state_reason":"reopened"} | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub/issues/1136/comments?per_page=3 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 16:03:10 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"57c5d41745d1850a5668491fc82543958ec801d97e5eeb55f7f8da49da691fce"'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=2>; rel="next", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=3>; rel="last"'), ('x-accepted-github-permissions', 'issues=read; pull_requests=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4991'), ('X-RateLimit-Reset', '1711299465'), ('X-RateLimit-Used', '9'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D9A4:1F911C:EB7E3:ECB7A:66004EBE')] | ||
| [{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/520169504","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-520169504","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":520169504,"node_id":"MDEyOklzc3VlQ29tbWVudDUyMDE2OTUwNA==","user":{"login":"stale[bot]","id":26384082,"node_id":"MDM6Qm90MjYzODQwODI=","avatar_url":"https://avatars.githubusercontent.com/in/1724?v=4","gravatar_id":"","url":"https://api.github.com/users/stale%5Bbot%5D","html_url":"https://github.com/apps/stale","followers_url":"https://api.github.com/users/stale%5Bbot%5D/followers","following_url":"https://api.github.com/users/stale%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/stale%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/stale%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stale%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/stale%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/stale%5Bbot%5D/repos","events_url":"https://api.github.com/users/stale%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/stale%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2019-08-10T18:16:46Z","updated_at":"2019-08-10T18:16:46Z","author_association":"NONE","body":"This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.\n","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/520169504/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879739410","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-1879739410","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":1879739410,"node_id":"IC_kwDOADYVqs5wCowS","user":{"login":"engn33r","id":6261182,"node_id":"MDQ6VXNlcjYyNjExODI=","avatar_url":"https://avatars.githubusercontent.com/u/6261182?v=4","gravatar_id":"","url":"https://api.github.com/users/engn33r","html_url":"https://github.com/engn33r","followers_url":"https://api.github.com/users/engn33r/followers","following_url":"https://api.github.com/users/engn33r/following{/other_user}","gists_url":"https://api.github.com/users/engn33r/gists{/gist_id}","starred_url":"https://api.github.com/users/engn33r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/engn33r/subscriptions","organizations_url":"https://api.github.com/users/engn33r/orgs","repos_url":"https://api.github.com/users/engn33r/repos","events_url":"https://api.github.com/users/engn33r/events{/privacy}","received_events_url":"https://api.github.com/users/engn33r/received_events","type":"User","site_admin":false},"created_at":"2024-01-06T16:04:34Z","updated_at":"2024-01-06T16:04:34Z","author_association":"NONE","body":"This was still an issue with v2.1.1 but the fix above worked for me :+1:\r\n\r\nIt would be great if this could be fixed in the library itself, with an example showing reversed usage in the docs.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879739410/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879763065","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-1879763065","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":1879763065,"node_id":"IC_kwDOADYVqs5wCuh5","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"created_at":"2024-01-06T17:34:11Z","updated_at":"2024-01-06T17:36:10Z","author_association":"COLLABORATOR","body":"I'd be surprised this does not work, there are some unit tests that cover this. Maybe test data have to be recorded again. Reopening, contribution welcome.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879763065/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}] | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repositories/3544490/issues/1136/comments?per_page=3&page=3 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 16:03:11 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"96b8b7b7d4b0d49be94be5c2cc20e610609885e3e1f73c2d6458eb7d33286eb0"'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=2>; rel="prev", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=1>; rel="first"'), ('x-accepted-github-permissions', 'issues=read; pull_requests=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4990'), ('X-RateLimit-Reset', '1711299465'), ('X-RateLimit-Used', '10'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D9AA:1F911C:EBB04:ECE9D:66004EBE')] | ||
| [{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2016818677","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-2016818677","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":2016818677,"node_id":"IC_kwDOADYVqs54NjX1","user":{"login":"engn33r","id":6261182,"node_id":"MDQ6VXNlcjYyNjExODI=","avatar_url":"https://avatars.githubusercontent.com/u/6261182?v=4","gravatar_id":"","url":"https://api.github.com/users/engn33r","html_url":"https://github.com/engn33r","followers_url":"https://api.github.com/users/engn33r/followers","following_url":"https://api.github.com/users/engn33r/following{/other_user}","gists_url":"https://api.github.com/users/engn33r/gists{/gist_id}","starred_url":"https://api.github.com/users/engn33r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/engn33r/subscriptions","organizations_url":"https://api.github.com/users/engn33r/orgs","repos_url":"https://api.github.com/users/engn33r/repos","events_url":"https://api.github.com/users/engn33r/events{/privacy}","received_events_url":"https://api.github.com/users/engn33r/received_events","type":"User","site_admin":false},"created_at":"2024-03-24T13:58:57Z","updated_at":"2024-03-24T14:00:06Z","author_association":"NONE","body":"For reference, I did not set `per_page` so I was using the default of 30 when I encountered this issue. But I was testing on only one repo with over 30 issues. It could make sense to test with repos with different numbers of issues to see if that is a factor.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2016818677/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}] | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repositories/3544490/issues/1136/comments?per_page=3&page=2 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 16:03:11 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"2da0c87bcdd4e81333c2bcff3919dd02c1f530d83d1f8b34300ce6bd4fcaea47"'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=1>; rel="prev", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=3>; rel="next", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=3>; rel="last", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=1>; rel="first"'), ('x-accepted-github-permissions', 'issues=read; pull_requests=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4989'), ('X-RateLimit-Reset', '1711299465'), ('X-RateLimit-Used', '11'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D9B0:1444A0:581646C:5894CA8:66004EBF')] | ||
| [{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2009839192","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-2009839192","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":2009839192,"node_id":"IC_kwDOADYVqs53y7ZY","user":{"login":"etiennnr","id":36542216,"node_id":"MDQ6VXNlcjM2NTQyMjE2","avatar_url":"https://avatars.githubusercontent.com/u/36542216?v=4","gravatar_id":"","url":"https://api.github.com/users/etiennnr","html_url":"https://github.com/etiennnr","followers_url":"https://api.github.com/users/etiennnr/followers","following_url":"https://api.github.com/users/etiennnr/following{/other_user}","gists_url":"https://api.github.com/users/etiennnr/gists{/gist_id}","starred_url":"https://api.github.com/users/etiennnr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/etiennnr/subscriptions","organizations_url":"https://api.github.com/users/etiennnr/orgs","repos_url":"https://api.github.com/users/etiennnr/repos","events_url":"https://api.github.com/users/etiennnr/events{/privacy}","received_events_url":"https://api.github.com/users/etiennnr/received_events","type":"User","site_admin":false},"created_at":"2024-03-20T15:24:15Z","updated_at":"2024-03-20T15:24:15Z","author_association":"NONE","body":"Can confirm this is still a problem for me, using version `1.59.1` though","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2009839192/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2011931389","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-2011931389","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":2011931389,"node_id":"IC_kwDOADYVqs5366L9","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T10:55:14Z","updated_at":"2024-03-21T10:55:14Z","author_association":"COLLABORATOR","body":"Can you confirm with latest release?","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2011931389/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2012384661","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-2012384661","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":2012384661,"node_id":"IC_kwDOADYVqs538o2V","user":{"login":"etiennnr","id":36542216,"node_id":"MDQ6VXNlcjM2NTQyMjE2","avatar_url":"https://avatars.githubusercontent.com/u/36542216?v=4","gravatar_id":"","url":"https://api.github.com/users/etiennnr","html_url":"https://github.com/etiennnr","followers_url":"https://api.github.com/users/etiennnr/followers","following_url":"https://api.github.com/users/etiennnr/following{/other_user}","gists_url":"https://api.github.com/users/etiennnr/gists{/gist_id}","starred_url":"https://api.github.com/users/etiennnr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/etiennnr/subscriptions","organizations_url":"https://api.github.com/users/etiennnr/orgs","repos_url":"https://api.github.com/users/etiennnr/repos","events_url":"https://api.github.com/users/etiennnr/events{/privacy}","received_events_url":"https://api.github.com/users/etiennnr/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T14:02:22Z","updated_at":"2024-03-21T14:02:22Z","author_association":"NONE","body":"Yes, Just tried with v.2.2.0 and got the same result\r\n\r\nHowever, my \"global\" `per_page` setting is set to 40. I tried setting it back to the default (30), and then it actually started from the last item of the `PaginatedList`! \r\n\r\nSo this actually seem to be somehow related to how the `reversed` algorithm deals with a different from the default `per_page` setting.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/2012384661/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}] | ||
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repositories/3544490/issues/1136/comments?per_page=3&page=1 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Sun, 24 Mar 2024 16:03:11 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"57c5d41745d1850a5668491fc82543958ec801d97e5eeb55f7f8da49da691fce"'), ('github-authentication-token-expiration', '2024-04-02 20:01:36 +0200'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=2>; rel="next", <https://api.github.com/repositories/3544490/issues/1136/comments?per_page=3&page=3>; rel="last"'), ('x-accepted-github-permissions', 'issues=read; pull_requests=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4988'), ('X-RateLimit-Reset', '1711299465'), ('X-RateLimit-Used', '12'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D9BC:7F0BF:891A4:89D38:66004EBF')] | ||
| [{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/520169504","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-520169504","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":520169504,"node_id":"MDEyOklzc3VlQ29tbWVudDUyMDE2OTUwNA==","user":{"login":"stale[bot]","id":26384082,"node_id":"MDM6Qm90MjYzODQwODI=","avatar_url":"https://avatars.githubusercontent.com/in/1724?v=4","gravatar_id":"","url":"https://api.github.com/users/stale%5Bbot%5D","html_url":"https://github.com/apps/stale","followers_url":"https://api.github.com/users/stale%5Bbot%5D/followers","following_url":"https://api.github.com/users/stale%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/stale%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/stale%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stale%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/stale%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/stale%5Bbot%5D/repos","events_url":"https://api.github.com/users/stale%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/stale%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2019-08-10T18:16:46Z","updated_at":"2019-08-10T18:16:46Z","author_association":"NONE","body":"This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.\n","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/520169504/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879739410","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-1879739410","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":1879739410,"node_id":"IC_kwDOADYVqs5wCowS","user":{"login":"engn33r","id":6261182,"node_id":"MDQ6VXNlcjYyNjExODI=","avatar_url":"https://avatars.githubusercontent.com/u/6261182?v=4","gravatar_id":"","url":"https://api.github.com/users/engn33r","html_url":"https://github.com/engn33r","followers_url":"https://api.github.com/users/engn33r/followers","following_url":"https://api.github.com/users/engn33r/following{/other_user}","gists_url":"https://api.github.com/users/engn33r/gists{/gist_id}","starred_url":"https://api.github.com/users/engn33r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/engn33r/subscriptions","organizations_url":"https://api.github.com/users/engn33r/orgs","repos_url":"https://api.github.com/users/engn33r/repos","events_url":"https://api.github.com/users/engn33r/events{/privacy}","received_events_url":"https://api.github.com/users/engn33r/received_events","type":"User","site_admin":false},"created_at":"2024-01-06T16:04:34Z","updated_at":"2024-01-06T16:04:34Z","author_association":"NONE","body":"This was still an issue with v2.1.1 but the fix above worked for me :+1:\r\n\r\nIt would be great if this could be fixed in the library itself, with an example showing reversed usage in the docs.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879739410/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879763065","html_url":"https://github.com/PyGithub/PyGithub/issues/1136#issuecomment-1879763065","issue_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/1136","id":1879763065,"node_id":"IC_kwDOADYVqs5wCuh5","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"created_at":"2024-01-06T17:34:11Z","updated_at":"2024-01-06T17:36:10Z","author_association":"COLLABORATOR","body":"I'd be surprised this does not work, there are some unit tests that cover this. Maybe test data have to be recorded again. Reopening, contribution welcome.","reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments/1879763065/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}] |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:08:02 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"673c5f1199083cdc732a68adb10687eef0cddf7b47b98aae062c044d293eeb6e"'), ('Last-Modified', 'Tue, 17 Sep 2024 17:14:19 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4994'), ('X-RateLimit-Reset', '1726603586'), ('X-RateLimit-Used', '6'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F17:39A73C:90E1A8:9263C0:66E9D392')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T17:14:19Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6906,"watchers_count":6906,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6906,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { id number }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:08:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4980'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '20'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F24:0F74:2C9F50:2D2649:66E9D392')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"id":"D_kwDOADYVqs4AbYx8","number":3044},{"id":"D_kwDOADYVqs4AbOZV","number":3033},{"id":"D_kwDOADYVqs4AaHoG","number":2993},{"id":"D_kwDOADYVqs4APEfM","number":2205},{"id":"D_kwDOADYVqs4AYpFV","number":2938},{"id":"D_kwDOADYVqs4AaOPh","number":2997},{"id":"D_kwDOADYVqs4AaEL9","number":2991},{"id":"D_kwDOADYVqs4AY1Qr","number":2953},{"id":"D_kwDOADYVqs4AYqi6","number":2943},{"id":"D_kwDOADYVqs4AYLcF","number":2916},{"id":"D_kwDOADYVqs4AX7h-","number":2909},{"id":"D_kwDOADYVqs4AXfgf","number":2889},{"id":"D_kwDOADYVqs4AWoET","number":2852},{"id":"D_kwDOADYVqs4AWfTk","number":2849},{"id":"D_kwDOADYVqs4AWN90","number":2814},{"id":"D_kwDOADYVqs4AV4CR","number":2795},{"id":"D_kwDOADYVqs4AVemo","number":2758},{"id":"D_kwDOADYVqs4AVJc_","number":2737},{"id":"D_kwDOADYVqs4AU_3J","number":2710},{"id":"D_kwDOADYVqs4ATVaC","number":2495},{"id":"D_kwDOADYVqs4APye2","number":2255},{"id":"D_kwDOADYVqs4AUj0g","number":2619},{"id":"D_kwDOADYVqs4AUSqN","number":2559},{"id":"D_kwDOADYVqs4AOBfB","number":2104},{"id":"D_kwDOADYVqs4AUAze","number":2539},{"id":"D_kwDOADYVqs4AOzRO","number":2177},{"id":"D_kwDOADYVqs4AS7Mv","number":2453},{"id":"D_kwDOADYVqs4ATdq2","number":2500},{"id":"D_kwDOADYVqs4ATJZD","number":2480},{"id":"D_kwDOADYVqs4AQ6mO","number":2321}]}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { id number }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:08:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4979'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '21'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F27:2B9D7D:33AD64:344396:66E9D393')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNlQxMzoyODo1MiswMTowMM4ASrYx","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT","hasNextPage":true,"hasPreviousPage":true},"nodes":[{"id":"D_kwDOADYVqs4ASrYx","number":2438},{"id":"D_kwDOADYVqs4ARkEV","number":2368},{"id":"D_kwDOADYVqs4ARjip","number":2367},{"id":"D_kwDOADYVqs4AP-zL","number":2264},{"id":"D_kwDOADYVqs4ARbFw","number":2357},{"id":"D_kwDOADYVqs4AQ39o","number":2318},{"id":"D_kwDOADYVqs4AQvCS","number":2306},{"id":"D_kwDOADYVqs4AQsU4","number":2304},{"id":"D_kwDOADYVqs4AQkpa","number":2298},{"id":"D_kwDOADYVqs4AQbma","number":2293},{"id":"D_kwDOADYVqs4AQbDa","number":2292},{"id":"D_kwDOADYVqs4AOdu4","number":2153},{"id":"D_kwDOADYVqs4AQJZe","number":2277},{"id":"D_kwDOADYVqs4ANphT","number":2057},{"id":"D_kwDOADYVqs4APrSb","number":2246},{"id":"D_kwDOADYVqs4APqQq","number":2242},{"id":"D_kwDOADYVqs4AOz7S","number":2179},{"id":"D_kwDOADYVqs4AOw8Q","number":2173},{"id":"D_kwDOADYVqs4AOeON","number":2155},{"id":"D_kwDOADYVqs4AONXM","number":2124},{"id":"MDEwOkRpc2N1c3Npb24zNDkxNjI2","number":2013},{"id":"MDEwOkRpc2N1c3Npb24zNDU2NDg0","number":1993},{"id":"MDEwOkRpc2N1c3Npb24zNTExNTg4","number":2023},{"id":"MDEwOkRpc2N1c3Npb24zNTA0OTQ4","number":2018},{"id":"MDEwOkRpc2N1c3Npb24zNTAwNzI2","number":2015},{"id":"MDEwOkRpc2N1c3Npb24zMjQzMTgx","number":1864},{"id":"MDEwOkRpc2N1c3Npb24zMzg4NzEy","number":1964},{"id":"MDEwOkRpc2N1c3Npb243Mzc4NA==","number":1790},{"id":"MDEwOkRpc2N1c3Npb24zMzU4MDAz","number":1946},{"id":"MDEwOkRpc2N1c3Npb24zMzQ0NzIz","number":1936}]}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { id number }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:08:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4978'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '22'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F8E:0F74:2CA274:2D2971:66E9D393')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wMy0xOFQwMzowODowMSswMTowMM4ALjaQ","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":true},"nodes":[{"id":"MDEwOkRpc2N1c3Npb24zMDI4NjI0","number":1848},{"id":"MDEwOkRpc2N1c3Npb24zMjI2MTI4","number":1854},{"id":"MDEwOkRpc2N1c3Npb24xNjY3ODM4","number":1819},{"id":"MDEwOkRpc2N1c3Npb240ODg4Ng==","number":1778},{"id":"MDEwOkRpc2N1c3Npb240ODkxMQ==","number":1780}]}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { id number }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "last": 30}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:08:04 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4977'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '23'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F22:149128:8C2DDB:8DA7E3:66E9D393')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wOS0yNlQyMDo1ODoxOSswMjowMM4AQ39o","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":true},"nodes":[{"id":"D_kwDOADYVqs4AQ39o","number":2318},{"id":"D_kwDOADYVqs4AQvCS","number":2306},{"id":"D_kwDOADYVqs4AQsU4","number":2304},{"id":"D_kwDOADYVqs4AQkpa","number":2298},{"id":"D_kwDOADYVqs4AQbma","number":2293},{"id":"D_kwDOADYVqs4AQbDa","number":2292},{"id":"D_kwDOADYVqs4AOdu4","number":2153},{"id":"D_kwDOADYVqs4AQJZe","number":2277},{"id":"D_kwDOADYVqs4ANphT","number":2057},{"id":"D_kwDOADYVqs4APrSb","number":2246},{"id":"D_kwDOADYVqs4APqQq","number":2242},{"id":"D_kwDOADYVqs4AOz7S","number":2179},{"id":"D_kwDOADYVqs4AOw8Q","number":2173},{"id":"D_kwDOADYVqs4AOeON","number":2155},{"id":"D_kwDOADYVqs4AONXM","number":2124},{"id":"MDEwOkRpc2N1c3Npb24zNDkxNjI2","number":2013},{"id":"MDEwOkRpc2N1c3Npb24zNDU2NDg0","number":1993},{"id":"MDEwOkRpc2N1c3Npb24zNTExNTg4","number":2023},{"id":"MDEwOkRpc2N1c3Npb24zNTA0OTQ4","number":2018},{"id":"MDEwOkRpc2N1c3Npb24zNTAwNzI2","number":2015},{"id":"MDEwOkRpc2N1c3Npb24zMjQzMTgx","number":1864},{"id":"MDEwOkRpc2N1c3Npb24zMzg4NzEy","number":1964},{"id":"MDEwOkRpc2N1c3Npb243Mzc4NA==","number":1790},{"id":"MDEwOkRpc2N1c3Npb24zMzU4MDAz","number":1946},{"id":"MDEwOkRpc2N1c3Npb24zMzQ0NzIz","number":1936},{"id":"MDEwOkRpc2N1c3Npb24zMDI4NjI0","number":1848},{"id":"MDEwOkRpc2N1c3Npb24zMjI2MTI4","number":1854},{"id":"MDEwOkRpc2N1c3Npb24xNjY3ODM4","number":1819},{"id":"MDEwOkRpc2N1c3Npb240ODg4Ng==","number":1778},{"id":"MDEwOkRpc2N1c3Npb240ODkxMQ==","number":1780}]}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { id number }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "last": 30, "before": "Y3Vyc29yOnYyOpK5MjAyMi0wOS0yNlQyMDo1ODoxOSswMjowMM4AQ39o"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:08:04 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4976'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '24'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F3A:39A73C:90EC18:926E5B:66E9D394')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wNi0yOFQyMDowODo1MyswMjowMM4AaOPh","endCursor":"Y3Vyc29yOnYyOpK5MjAyMi0xMS0yMlQwODo0Mjo0OCswMTowMM4ARbFw","hasNextPage":true,"hasPreviousPage":true},"nodes":[{"id":"D_kwDOADYVqs4AaOPh","number":2997},{"id":"D_kwDOADYVqs4AaEL9","number":2991},{"id":"D_kwDOADYVqs4AY1Qr","number":2953},{"id":"D_kwDOADYVqs4AYqi6","number":2943},{"id":"D_kwDOADYVqs4AYLcF","number":2916},{"id":"D_kwDOADYVqs4AX7h-","number":2909},{"id":"D_kwDOADYVqs4AXfgf","number":2889},{"id":"D_kwDOADYVqs4AWoET","number":2852},{"id":"D_kwDOADYVqs4AWfTk","number":2849},{"id":"D_kwDOADYVqs4AWN90","number":2814},{"id":"D_kwDOADYVqs4AV4CR","number":2795},{"id":"D_kwDOADYVqs4AVemo","number":2758},{"id":"D_kwDOADYVqs4AVJc_","number":2737},{"id":"D_kwDOADYVqs4AU_3J","number":2710},{"id":"D_kwDOADYVqs4ATVaC","number":2495},{"id":"D_kwDOADYVqs4APye2","number":2255},{"id":"D_kwDOADYVqs4AUj0g","number":2619},{"id":"D_kwDOADYVqs4AUSqN","number":2559},{"id":"D_kwDOADYVqs4AOBfB","number":2104},{"id":"D_kwDOADYVqs4AUAze","number":2539},{"id":"D_kwDOADYVqs4AOzRO","number":2177},{"id":"D_kwDOADYVqs4AS7Mv","number":2453},{"id":"D_kwDOADYVqs4ATdq2","number":2500},{"id":"D_kwDOADYVqs4ATJZD","number":2480},{"id":"D_kwDOADYVqs4AQ6mO","number":2321},{"id":"D_kwDOADYVqs4ASrYx","number":2438},{"id":"D_kwDOADYVqs4ARkEV","number":2368},{"id":"D_kwDOADYVqs4ARjip","number":2367},{"id":"D_kwDOADYVqs4AP-zL","number":2264},{"id":"D_kwDOADYVqs4ARbFw","number":2357}]}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { id number }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "last": 30, "before": "Y3Vyc29yOnYyOpK5MjAyNC0wNi0yOFQyMDowODo1MyswMjowMM4AaOPh"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:08:05 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4975'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '25'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FB8:381690:9439A6:95B6AF:66E9D394')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOFQxNzozMjoxMiswMjowMM4AYpFV","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"id":"D_kwDOADYVqs4AbYx8","number":3044},{"id":"D_kwDOADYVqs4AbOZV","number":3033},{"id":"D_kwDOADYVqs4AaHoG","number":2993},{"id":"D_kwDOADYVqs4APEfM","number":2205},{"id":"D_kwDOADYVqs4AYpFV","number":2938}]}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { id number }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 1, "after": null}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:08:05 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4974'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '26'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FDE:34173C:353005:35C67F:66E9D395')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"id":"D_kwDOADYVqs4AbYx8","number":3044}]}}}} |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Wed, 06 Nov 2024 16:42:38 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"3afadc6634ff667ccc0f7a4bac9e11272b6f61d3b092261e62c29520417f367e"'), ('Last-Modified', 'Wed, 06 Nov 2024 10:56:11 GMT'), ('X-OAuth-Scopes', 'read:discussion, repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2025-02-04 16:42:10 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4997'), ('X-RateLimit-Reset', '1730914958'), ('X-RateLimit-Used', '3'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', 'CA6A:1F06D9:152550C:155A549:672B9C7E')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","user_view_type":"public","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-11-06T10:56:11Z","pushed_at":"2024-11-04T10:08:04Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16283,"stargazers_count":7020,"watchers_count":7020,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1786,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":351,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1786,"open_issues":351,"watchers":7020,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","allow_squash_merge":true,"allow_merge_commit":false,"allow_rebase_merge":false,"allow_auto_merge":false,"delete_branch_on_merge":true,"allow_update_branch":true,"use_squash_pr_title_as_default":true,"squash_merge_commit_message":"PR_BODY","squash_merge_commit_title":"PR_TITLE","merge_commit_message":"PR_TITLE","merge_commit_title":"MERGE_MESSAGE","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","user_view_type":"public","site_admin":false},"security_and_analysis":{"secret_scanning":{"status":"disabled"},"secret_scanning_push_protection":{"status":"disabled"},"dependabot_security_updates":{"status":"enabled"},"secret_scanning_non_provider_patterns":{"status":"disabled"},"secret_scanning_validity_checks":{"status":"disabled"}},"network_count":1786,"subscribers_count":111} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $number: Int!) {\n repository(name: $repo, owner: $owner) {\n discussion(number: $number) { author { login } number title }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "number": 2205}} | ||
| 200 | ||
| [('Date', 'Wed, 06 Nov 2024 16:42:39 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2025-02-04 16:42:10 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4999'), ('X-RateLimit-Reset', '1730914959'), ('X-RateLimit-Used', '1'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', 'CAAD:3C869D:15224B9:1557596:672B9C7F')] | ||
| {"data":{"repository":{"discussion":{"author":{"login":"EnricoMi"},"number":2205,"title":"Is the PyGithub project dead? How can the community help?"}}}} |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:54:13 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4978'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '22'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FBA:1BAA22:E03E49:E21E67:66E98A05')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n author { login }\n number\n repository {\n owner { login }\n name\n }\n title\n }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:54:14 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4987'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '13'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F75:221185:D4482D:D6286C:66E98A05')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"author":{"login":"gmishkin"},"number":3044,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Automaticlly look for access tokens in standard places"},{"author":{"login":"kostrykin"},"number":3033,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Possible to interact with the Discussions on a GitHub repository?"},{"author":{"login":"heitorPB"},"number":2993,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to get a list of custom repository properties?"},{"author":{"login":"EnricoMi"},"number":2205,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Is the PyGithub project dead? How can the community help?"},{"author":{"login":"guymatz"},"number":2938,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How can I tell if my branch has a Pull Request?"},{"author":{"login":"bobneuman"},"number":2997,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Response caching"},{"author":{"login":"syang"},"number":2991,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Recursively list all file names in a repo without being throttled"},{"author":{"login":"lmilbaum"},"number":2953,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Can this project used for creation a GitHub app?"},{"author":{"login":"zituo-jin"},"number":2943,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Operations on pull requests in merge queue"},{"author":{"login":"pn17F2DD3"},"number":2916,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Count the number of 'reopened' issues in GitHub"},{"author":{"login":"bliu11"},"number":2909,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"long backoff time when encountering a single 403"},{"author":{"login":"andrewakl"},"number":2889,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to set the \"prevent_self_review\" param when creating/updating GitHub environment?"},{"author":{"login":"whanso"},"number":2852,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Batch multiple `create_file` invocations within single commit?"},{"author":{"login":"baishuotong"},"number":2849,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"A research for generating PR checklists in Pull Request Template"},{"author":{"login":"marksie1988"},"number":2814,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"get_secret not raising an exception"},{"author":{"login":"fsadykov"},"number":2795,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to get github issue python class using url or id?"},{"author":{"login":"vsajip"},"number":2758,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How do you sync a fork with its parent?"},{"author":{"login":"lokeshwarobuli"},"number":2737,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to log requests"},{"author":{"login":"aditya-samalla"},"number":2710,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to sign a commit raised via PyGithub"},{"author":{"login":"zsbeheshti"},"number":2495,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Definition of the initial population for the genetic algorithm by the user"},{"author":{"login":"buhtz"},"number":2255,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to securily use access tokens?"},{"author":null,"number":2619,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How do I create a new branch with PyGithub?"},{"author":{"login":"antoineKorbit"},"number":2559,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Release of new version for this library"},{"author":{"login":"dougdonohoe"},"number":2104,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How do I call /installation/repositories API?"},{"author":{"login":"parteekcoder"},"number":2539,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Pull request accross different repository"},{"author":{"login":"jackfurr"},"number":2177,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to Revert a Merged PR"},{"author":{"login":"EnricoMi"},"number":2453,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Maintainers TODO list"},{"author":{"login":"c4mmartin"},"number":2500,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Trying to fire off workflow_dispatch events"},{"author":{"login":"arunanandhan"},"number":2480,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Is there a way to search if a string present in default branch?"},{"author":{"login":"EnricoMi"},"number":2321,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Prioritising pull requests"}]}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n author { login }\n number\n repository {\n owner { login }\n name\n }\n title\n }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:54:14 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4986'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '14'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F1E:39E39C:D73E82:D91A96:66E98A06')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNlQxMzoyODo1MiswMTowMM4ASrYx","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT","hasNextPage":true,"hasPreviousPage":true},"nodes":[{"author":{"login":"Vuizur"},"number":2438,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Uploading multiple assets to a release"},{"author":{"login":"songyuc"},"number":2368,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Can I download a specifical file from my repo?"},{"author":{"login":"gitblanc"},"number":2367,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"ImportError: cannot import name 'Github' from 'github' (/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/github/__init__.py)"},{"author":{"login":"mmdbalkhi"},"number":2264,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2396)"},{"author":{"login":"mariolasagna007"},"number":2357,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"repo.get_codescan_alerts()"},{"author":{"login":"xii-yang"},"number":2318,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to search the Pull Request which first introduce a commit Sha"},{"author":{"login":"xenosdio"},"number":2306,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Verify if login_or_token is correct"},{"author":{"login":"DelaporteRobin"},"number":2304,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Upload files on github"},{"author":{"login":"mosheco"},"number":2298,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Question: where is GithubIntegration documented ."},{"author":{"login":"ygoldsmith"},"number":2293,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to query check suite results"},{"author":{"login":"nri-xiang-liu-01"},"number":2292,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How can I create a new branch by use PyGithub?"},{"author":{"login":"yoyomeng2"},"number":2153,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Is there support to set bypass PR requirements users?"},{"author":{"login":"kenorb"},"number":2277,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Download an artifact's file from GitHub Actions (Workflows)"},{"author":{"login":"LuisSFGH"},"number":2057,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Do you have plans to add workflows features?"},{"author":{"login":"sayakpaul"},"number":2246,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Question on hostname"},{"author":{"login":"sr-murthy"},"number":2242,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Top repo contributors"},{"author":{"login":"kamaraj-muthupandian"},"number":2179,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Connect GHE cloud using OIDC"},{"author":{"login":"xmo-odoo"},"number":2173,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Dedicated builder object for review comments?"},{"author":{"login":"yoyomeng2"},"number":2155,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"GithubCredentials 401"},{"author":{"login":"padmashree12"},"number":2124,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Star"},{"author":{"login":"simkimsia"},"number":2013,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to run tests for just 1 test case?"},{"author":{"login":"scoates"},"number":1993,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Drop .pyi?"},{"author":{"login":"yoyomeng2"},"number":2023,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Looking for githubstatus Object?"},{"author":{"login":"evilensky"},"number":2018,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"audit-log"},{"author":{"login":"orenzp"},"number":2015,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"PyGithub support for Team"},{"author":{"login":"Nuzair46"},"number":1864,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"get_contributers"},{"author":{"login":"Captain8771"},"number":1964,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"ModuleNotFoundError: No module named 'github' but i pip installed pygithub?"},{"author":{"login":"ssbarnea"},"number":1790,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to batch enable auto-merges on multiple repositories?"},{"author":{"login":"astrochun"},"number":1946,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Exporting JSON about repositories"},{"author":{"login":"bhushanladdad"},"number":1936,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"get_contents thorws error UnknownObjectException"}]}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n author { login }\n number\n repository {\n owner { login }\n name\n }\n title\n }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:54:15 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4985'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '15'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FB0:3299B4:DC961E:DE761B:66E98A06')] | ||
| {"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wMy0xOFQwMzowODowMSswMTowMM4ALjaQ","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":true},"nodes":[{"author":{"login":"dejokz"},"number":1848,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to get number of open and closed issue of a repo"},{"author":{"login":"MarkWilsonODS"},"number":1854,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Repo visibility"},{"author":{"login":"kenorb"},"number":1819,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to access logs_url's contents?"},{"author":{"login":"henryiii"},"number":1778,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Dump Issue to structured format"},{"author":{"login":"henryiii"},"number":1780,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Show an example of a more advanced query"}]}}}} |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:41:20 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4996'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '4'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FFB:93EBB:C1EEA3:C3A90C:66E98700')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { number title }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": true, "category_id": null, "states": null, "first": 30}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:41:21 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4998'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '2'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FBC:3299B4:CDA584:CF6517:66E98700')] | ||
| {"data":{"repository":{"discussions":{"totalCount":10,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOVQxODowMTowMCswMjowMM4AaHoG","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQxNTo1Njo1MSswMTowMM2-9g==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"number":2993,"title":"How to get a list of custom repository properties?"},{"number":2619,"title":"How do I create a new branch with PyGithub?"},{"number":2104,"title":"How do I call /installation/repositories API?"},{"number":2500,"title":"Trying to fire off workflow_dispatch events"},{"number":2292,"title":"How can I create a new branch by use PyGithub?"},{"number":2153,"title":"Is there support to set bypass PR requirements users?"},{"number":2277,"title":"Download an artifact's file from GitHub Actions (Workflows)"},{"number":2023,"title":"Looking for githubstatus Object?"},{"number":1964,"title":"ModuleNotFoundError: No module named 'github' but i pip installed pygithub?"},{"number":1778,"title":"Dump Issue to structured format"}]}}}} |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:52:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4981'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '19'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F55:1BAA22:DE780E:E05464:66E989AD')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { number title }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": "MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYy", "states": null, "first": 30}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:52:46 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4988'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '12'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F12:39E39C:D5995D:D7719E:66E989AD')] | ||
| {"data":{"repository":{"discussions":{"totalCount":7,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"number":3044,"title":"Automaticlly look for access tokens in standard places"},{"number":2997,"title":"Response caching"},{"number":2057,"title":"Do you have plans to add workflows features?"},{"number":2242,"title":"Top repo contributors"},{"number":2173,"title":"Dedicated builder object for review comments?"},{"number":1993,"title":"Drop .pyi?"},{"number":1780,"title":"Show an example of a more advanced query"}]}}},"extensions":{"warnings":[{"type":"DEPRECATION","message":"The id MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYy is deprecated. Update your cache to use the next_global_id from the data payload.","data":{"legacy_global_id":"MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYy","next_global_id":"DIC_kwDOADYVqs4B6LmG"},"link":"https://docs.github.com"}]}} |
| https | ||
| GET | ||
| api.github.com | ||
| None | ||
| /repos/PyGithub/PyGithub | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
| None | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:49:29 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4987'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '13'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F0A:8BC4A:D5EE80:D7C1D7:66E988E9')] | ||
| {"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?v=4","gravatar_id":"","url":"https://api.github.com/users/PyGithub","html_url":"https://github.com/PyGithub","followers_url":"https://api.github.com/users/PyGithub/followers","following_url":"https://api.github.com/users/PyGithub/following{/other_user}","gists_url":"https://api.github.com/users/PyGithub/gists{/gist_id}","starred_url":"https://api.github.com/users/PyGithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PyGithub/subscriptions","organizations_url":"https://api.github.com/users/PyGithub/orgs","repos_url":"https://api.github.com/users/PyGithub/repos","events_url":"https://api.github.com/users/PyGithub/events{/privacy}","received_events_url":"https://api.github.com/users/PyGithub/received_events","type":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n repository(name: $repo, owner: $owner) {\n discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { number title }\n }\n }\n }\n ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": ["CLOSED"], "first": 30}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 13:49:29 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4991'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '9'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FF2:2E65B1:C92755:CAF635:66E988E9')] | ||
| {"data":{"repository":{"discussions":{"totalCount":6,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOFQxNzozMjoxMiswMjowMM4AYpFV","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0zMFQxODoxODo0OSswMjowMM4ATJZD","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"number":2938,"title":"How can I tell if my branch has a Pull Request?"},{"number":2495,"title":"Definition of the initial population for the genetic algorithm by the user"},{"number":2559,"title":"Release of new version for this library"},{"number":2104,"title":"How do I call /installation/repositories API?"},{"number":2539,"title":"Pull request accross different repository"},{"number":2480,"title":"Is there a way to search if a string present in default branch?"}]}}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on Discussion {\n answer {\n author { login }\n body\n bodyHTML\n bodyText\n createdAt\n databaseId\n discussion { id }\n editor { login }\n id\n lastEditedAt\n updatedAt\n url\n }\n author { login }\n body\n bodyHTML\n bodyText\n category {\n createdAt\n description\n emoji\n emojiHTML\n id\n isAnswerable\n name\n repository { owner { login } name }\n slug\n updatedAt\n }\n comments(first: 10) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n id\n }\n }\n createdAt\n databaseId\n editor { login }\n id\n labels(first: 10) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n id\n name\n }\n }\n lastEditedAt\n number\n reactions(first: 10) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes {\n id\n }\n }\n repository {\n owner { login }\n name\n }\n title\n updatedAt\n url\n }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4AaHoG"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:10:18 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4973'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '27'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F67:2B9D7D:35ACF2:3648DD:66E9D41A')] | ||
| {"data":{"node":{"__typename":"Discussion","answer":{"author":{"login":"dawngerpony"},"body":"[This comment](https://github.com/PyGithub/PyGithub/issues/2895#issue-2118964108) contains the answer to your question:\r\n\r\n```python\r\nmy_repo.raw_data[\"custom_properties\"]\r\n```\r\n\r\n#2968 appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.","bodyHTML":"<p dir=\"auto\"><a href=\"https://github.com/PyGithub/PyGithub/issues/2895#issue-2118964108\" data-hovercard-type=\"issue\" data-hovercard-url=\"/PyGithub/PyGithub/issues/2895/hovercard\">This comment</a> contains the answer to your question:</p>\n<div class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"my_repo.raw_data["custom_properties"]\"><pre class=\"notranslate\"><span class=\"pl-s1\">my_repo</span>.<span class=\"pl-s1\">raw_data</span>[<span class=\"pl-s\">\"custom_properties\"</span>]</pre></div>\n<p dir=\"auto\"><a class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2293897055\" data-permission-text=\"Title is private\" data-url=\"https://github.com/PyGithub/PyGithub/issues/2968\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/PyGithub/PyGithub/pull/2968/hovercard\" href=\"https://github.com/PyGithub/PyGithub/pull/2968\">#2968</a> appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.</p>","bodyText":"This comment contains the answer to your question:\nmy_repo.raw_data[\"custom_properties\"]\n#2968 appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.","createdAt":"2024-08-23T06:36:50Z","databaseId":10426644,"discussion":{"id":"D_kwDOADYVqs4AaHoG"},"editor":null,"id":"DC_kwDOADYVqs4AnxkU","lastEditedAt":null,"updatedAt":"2024-08-23T06:36:51Z","url":"https://github.com/PyGithub/PyGithub/discussions/2993#discussioncomment-10426644"},"author":{"login":"heitorPB"},"body":"What is the equivalent of `https://api.github.com/repos/OWNER/REPO/properties/values`? I'm interested in getting/setting custom properties for my repos. I can do that with `curl`, but couldn't find a way to do it via this project.\r\n\r\nDocs here: [Get all custom property values for a repository](https://docs.github.com/en/rest/repos/custom-properties?apiVersion=2022-11-28#get-all-custom-property-values-for-a-repository).","bodyHTML":"<p dir=\"auto\">What is the equivalent of <code class=\"notranslate\">https://api.github.com/repos/OWNER/REPO/properties/values</code>? I'm interested in getting/setting custom properties for my repos. I can do that with <code class=\"notranslate\">curl</code>, but couldn't find a way to do it via this project.</p>\n<p dir=\"auto\">Docs here: <a href=\"https://docs.github.com/en/rest/repos/custom-properties?apiVersion=2022-11-28#get-all-custom-property-values-for-a-repository\">Get all custom property values for a repository</a>.</p>","bodyText":"What is the equivalent of https://api.github.com/repos/OWNER/REPO/properties/values? I'm interested in getting/setting custom properties for my repos. I can do that with curl, but couldn't find a way to do it via this project.\nDocs here: Get all custom property values for a repository.","category":{"createdAt":"2020-12-08T23:29:13Z","description":"Ask the community for help","emoji":":pray:","emojiHTML":"<div>🙏</div>","id":"MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYx","isAnswerable":true,"name":"Q&A","repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"slug":"q-a","updatedAt":"2020-12-08T23:29:13Z"},"comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yM1QwODozNjo1MCswMjowMM4AnxkU","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOVQxODowMTowMCswMjowMM4AoA2V","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AnxkU"},{"id":"DC_kwDOADYVqs4AoA2V"}]},"createdAt":"2024-06-21T13:11:38Z","databaseId":6846982,"editor":null,"id":"D_kwDOADYVqs4AaHoG","labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"lastEditedAt":null,"number":2993,"reactions":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to get a list of custom repository properties?","updatedAt":"2024-08-29T16:01:00Z","url":"https://github.com/PyGithub/PyGithub/discussions/2993"}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on Discussion { id }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4AaHoG"}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 09:55:02 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4978'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '22'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA0:38937:5DC62D:5EA454:66EAA376')] | ||
| {"data":{"node":{"__typename":"Discussion","id":"D_kwDOADYVqs4AaHoG"}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation Mutation($input: AddDiscussionCommentInput!) { addDiscussionComment(input: $input) { comment { id body } } }", "variables": {"input": {"body": "test comment", "discussionId": "D_kwDOADYVqs4AaHoG", "replyToId": null}}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 09:55:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4977'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '23'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FD6:2E4B5D:5DDE95:5EBC96:66EAA376')] | ||
| {"data":{"addDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYk","body":"test comment"}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation Mutation($input: AddDiscussionCommentInput!) { addDiscussionComment(input: $input) { comment { id body } } }", "variables": {"input": {"body": "test reply", "discussionId": "D_kwDOADYVqs4AaHoG", "replyToId": "DC_kwDOADYVqs4AovYk"}}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 09:55:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4976'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '24'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FB4:12DC96:59403B:5A1DF2:66EAA377')] | ||
| {"data":{"addDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYl","body":"test reply"}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation Mutation($input: AddDiscussionCommentInput!) { addDiscussionComment(input: $input) { comment { id body } } }", "variables": {"input": {"body": "test reply by string id", "discussionId": "D_kwDOADYVqs4AaHoG", "replyToId": "DC_kwDOADYVqs4AovYk"}}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 09:55:04 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4975'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '25'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FCC:385EF9:238109:23DAE5:66EAA377')] | ||
| {"data":{"addDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYm","body":"test reply by string id"}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation Mutation($input: DeleteDiscussionCommentInput!) { deleteDiscussionComment(input: $input) { comment { id } } }", "variables": {"input": {"id": "DC_kwDOADYVqs4AovYm"}}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 09:55:04 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4974'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '26'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FEE:319EE5:223AF7A:22D58C8:66EAA378')] | ||
| {"data":{"deleteDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYm"}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation Mutation($input: DeleteDiscussionCommentInput!) { deleteDiscussionComment(input: $input) { comment { id } } }", "variables": {"input": {"id": "DC_kwDOADYVqs4AovYl"}}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 09:55:05 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4973'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '27'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FD5:216D57:5BBEE5:5C9D60:66EAA379')] | ||
| {"data":{"deleteDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYl"}}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation Mutation($input: DeleteDiscussionCommentInput!) { deleteDiscussionComment(input: $input) { comment { id } } }", "variables": {"input": {"id": "DC_kwDOADYVqs4AovYk"}}} | ||
| 200 | ||
| [('Date', 'Wed, 18 Sep 2024 09:55:06 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4972'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '28'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA6:3A746F:5AB4A2:5B92B9:66EAA379')] | ||
| {"data":{"deleteDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYk"}}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on Discussion { id }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4AaHoG"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:44:12 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FF5:1E58CD:A4D98A:A6B211:66E9DC0C')] | ||
| {"data":{"node":{"__typename":"Discussion","id":"D_kwDOADYVqs4AaHoG"}}} | ||
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($discussionId: ID!, $first: Int, $last: Int, $before: String, $after: String) {\n node(id: $discussionId) {\n ... on Discussion {\n comments(first: $first, last: $last, before: $before, after: $after) {\n totalCount\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n nodes { id }\n }\n }\n }\n }", "variables": {"discussionId": "D_kwDOADYVqs4AaHoG", "first": 30}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:44:12 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4958'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '42'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F5C:1B4C5D:A62E39:A802C1:66E9DC0C')] | ||
| {"data":{"node":{"comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yM1QwODozNjo1MCswMjowMM4AnxkU","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOVQxODowMTowMCswMjowMM4AoA2V","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AnxkU"},{"id":"DC_kwDOADYVqs4AoA2V"}]}}}} |
| https | ||
| POST | ||
| api.github.com | ||
| None | ||
| /graphql | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "\n query Q($id: ID!) {\n node(id: $id) {\n __typename\n ... on Discussion { title }\n }\n }\n ", "variables": {"id": "D_kwDOADYVqs4AaHoG"}} | ||
| 200 | ||
| [('Date', 'Tue, 17 Sep 2024 19:36:02 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4971'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '29'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA6:34173C:4D5D16:4E39DF:66E9DA22')] | ||
| {"data":{"node":{"__typename":"Discussion","title":"How to get a list of custom repository properties?"}}} |
| ############################ Copyrights and license ############################ | ||
| # # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
| # This file is part of PyGithub. # | ||
| # http://pygithub.readthedocs.io/ # | ||
| # # | ||
| # PyGithub is free software: you can redistribute it and/or modify it under # | ||
| # the terms of the GNU Lesser General Public License as published by the Free # | ||
| # Software Foundation, either version 3 of the License, or (at your option) # | ||
| # any later version. # | ||
| # # | ||
| # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | ||
| # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | ||
| # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | ||
| # details. # | ||
| # # | ||
| # You should have received a copy of the GNU Lesser General Public License # | ||
| # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | ||
| # # | ||
| ################################################################################ | ||
| from datetime import datetime, timezone | ||
| from . import Framework | ||
| class RepositoryDiscussion(Framework.TestCase): | ||
| discussion_schema = """ | ||
| answer { | ||
| author { login } | ||
| body | ||
| bodyHTML | ||
| bodyText | ||
| createdAt | ||
| databaseId | ||
| discussion { id } | ||
| editor { login } | ||
| id | ||
| lastEditedAt | ||
| updatedAt | ||
| url | ||
| } | ||
| author { login } | ||
| body | ||
| bodyHTML | ||
| bodyText | ||
| category { | ||
| createdAt | ||
| description | ||
| emoji | ||
| emojiHTML | ||
| id | ||
| isAnswerable | ||
| name | ||
| repository { owner { login } name } | ||
| slug | ||
| updatedAt | ||
| } | ||
| comments(first: 10) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes { | ||
| id | ||
| } | ||
| } | ||
| createdAt | ||
| databaseId | ||
| editor { login } | ||
| id | ||
| labels(first: 10) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes { | ||
| id | ||
| name | ||
| } | ||
| } | ||
| lastEditedAt | ||
| number | ||
| reactions(first: 10) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes { | ||
| id | ||
| } | ||
| } | ||
| repository { | ||
| owner { login } | ||
| name | ||
| } | ||
| title | ||
| updatedAt | ||
| url | ||
| """ | ||
| def setUp(self): | ||
| super().setUp() | ||
| self.discussion = self.g.get_repository_discussion("D_kwDOADYVqs4AaHoG", self.discussion_schema) | ||
| def testAttributes(self): | ||
| self.assertEqual(self.discussion.answer.author.login, "dawngerpony") | ||
| self.assertEqual( | ||
| self.discussion.answer.body, | ||
| """[This comment](https://github.com/PyGithub/PyGithub/issues/2895#issue-2118964108) contains the answer to your question:\r\n\r\n```python\r\nmy_repo.raw_data["custom_properties"]\r\n```\r\n\r\n#2968 appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.""", | ||
| ) | ||
| self.assertEqual( | ||
| self.discussion.answer.body_html, | ||
| """<p dir="auto"><a href="https://github.com/PyGithub/PyGithub/issues/2895#issue-2118964108" data-hovercard-type="issue" data-hovercard-url="/PyGithub/PyGithub/issues/2895/hovercard">This comment</a> contains the answer to your question:</p>\n<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="my_repo.raw_data["custom_properties"]"><pre class="notranslate"><span class="pl-s1">my_repo</span>.<span class="pl-s1">raw_data</span>[<span class="pl-s">"custom_properties"</span>]</pre></div>\n<p dir="auto"><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2293897055" data-permission-text="Title is private" data-url="https://github.com/PyGithub/PyGithub/issues/2968" data-hovercard-type="pull_request" data-hovercard-url="/PyGithub/PyGithub/pull/2968/hovercard" href="https://github.com/PyGithub/PyGithub/pull/2968">#2968</a> appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.</p>""", | ||
| ) | ||
| self.assertEqual( | ||
| self.discussion.answer.body_text, | ||
| "This comment contains the answer to your question:\nmy_repo.raw_data[\"custom_properties\"]\n#2968 appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.", | ||
| ) | ||
| self.assertEqual(self.discussion.answer.created_at, datetime(2024, 8, 23, 6, 36, 50, tzinfo=timezone.utc)) | ||
| self.assertEqual(self.discussion.answer.database_id, 10426644) | ||
| self.assertEqual(self.discussion.answer.discussion.node_id, "D_kwDOADYVqs4AaHoG") | ||
| self.assertIsNone(self.discussion.answer.editor) | ||
| self.assertEqual(self.discussion.answer.node_id, "DC_kwDOADYVqs4AnxkU") | ||
| self.assertIsNone(self.discussion.answer.last_edited_at) | ||
| self.assertEqual(self.discussion.answer.updated_at, datetime(2024, 8, 23, 6, 36, 51, tzinfo=timezone.utc)) | ||
| self.assertEqual( | ||
| self.discussion.answer.html_url, | ||
| "https://github.com/PyGithub/PyGithub/discussions/2993#discussioncomment-10426644", | ||
| ) | ||
| self.assertEqual(self.discussion.author.login, "heitorPB") | ||
| self.assertEqual( | ||
| self.discussion.body, | ||
| """What is the equivalent of `https://api.github.com/repos/OWNER/REPO/properties/values`? I'm interested in getting/setting custom properties for my repos. I can do that with `curl`, but couldn't find a way to do it via this project.\r\n\r\nDocs here: [Get all custom property values for a repository](https://docs.github.com/en/rest/repos/custom-properties?apiVersion=2022-11-28#get-all-custom-property-values-for-a-repository).""", | ||
| ) | ||
| self.assertEqual( | ||
| self.discussion.body_html, | ||
| """<p dir="auto">What is the equivalent of <code class="notranslate">https://api.github.com/repos/OWNER/REPO/properties/values</code>? I'm interested in getting/setting custom properties for my repos. I can do that with <code class="notranslate">curl</code>, but couldn't find a way to do it via this project.</p>\n<p dir="auto">Docs here: <a href="https://docs.github.com/en/rest/repos/custom-properties?apiVersion=2022-11-28#get-all-custom-property-values-for-a-repository">Get all custom property values for a repository</a>.</p>""", | ||
| ) | ||
| self.assertEqual( | ||
| self.discussion.body_text, | ||
| """What is the equivalent of https://api.github.com/repos/OWNER/REPO/properties/values? I'm interested in getting/setting custom properties for my repos. I can do that with curl, but couldn't find a way to do it via this project.\nDocs here: Get all custom property values for a repository.""", | ||
| ) | ||
| self.assertEqual(self.discussion.category.created_at, datetime(2020, 12, 8, 23, 29, 13, tzinfo=timezone.utc)) | ||
| self.assertEqual(self.discussion.category.description, "Ask the community for help") | ||
| self.assertEqual(self.discussion.category.emoji, ":pray:") | ||
| self.assertEqual(self.discussion.category.emoji_html, "<div>🙏</div>") | ||
| self.assertEqual(self.discussion.category.id, "MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYx") | ||
| self.assertEqual(self.discussion.category.is_answerable, True) | ||
| self.assertEqual(self.discussion.category.name, "Q&A") | ||
| self.assertEqual(self.discussion.category.repository.owner.login, "PyGithub") | ||
| self.assertEqual(self.discussion.category.repository.name, "PyGithub") | ||
| self.assertEqual(self.discussion.category.slug, "q-a") | ||
| self.assertEqual(self.discussion.category.updated_at, datetime(2020, 12, 8, 23, 29, 13, tzinfo=timezone.utc)) | ||
| self.assertEqual(self.discussion.created_at, datetime(2024, 6, 21, 13, 11, 38, tzinfo=timezone.utc)) | ||
| self.assertEqual(self.discussion.database_id, 6846982) | ||
| self.assertIsNone(self.discussion.editor) | ||
| self.assertEqual(self.discussion.node_id, "D_kwDOADYVqs4AaHoG") | ||
| self.assertIsNone(self.discussion.last_edited_at) | ||
| self.assertEqual(self.discussion.number, 2993) | ||
| self.assertEqual(self.discussion.repository.owner.login, "PyGithub") | ||
| self.assertEqual(self.discussion.repository.name, "PyGithub") | ||
| self.assertEqual(self.discussion.title, "How to get a list of custom repository properties?") | ||
| self.assertEqual(self.discussion.updated_at, datetime(2024, 8, 29, 16, 1, 0, tzinfo=timezone.utc)) | ||
| self.assertListEqual( | ||
| [c.node_id for c in self.discussion.get_comments("id")], ["DC_kwDOADYVqs4AnxkU", "DC_kwDOADYVqs4AoA2V"] | ||
| ) | ||
| self.assertEqual(self.discussion.get_labels().totalCount, 0) | ||
| self.assertEqual(self.discussion.get_reactions().totalCount, 0) | ||
| def testGetComments(self): | ||
| discussion = self.g.get_repository_discussion("D_kwDOADYVqs4AaHoG", "id") | ||
| comments_pages = discussion.get_comments("id") | ||
| comments = list(comments_pages) | ||
| self.assertEqual(comments_pages.totalCount, 2) | ||
| self.assertEqual(len(comments), 2) | ||
| self.assertListEqual([c.id for c in comments], ["DC_kwDOADYVqs4AnxkU", "DC_kwDOADYVqs4AoA2V"]) | ||
| def testGetCommentsWithoutNodeId(self): | ||
| discussion = self.g.get_repository_discussion("D_kwDOADYVqs4AaHoG", "title") | ||
| with self.assertRaises(RuntimeError) as e: | ||
| discussion.get_comments("id") | ||
| self.assertEqual(e.exception.args, ("Retrieving discussion comments requires the discussion field 'id'",)) | ||
| def testAddAndDeleteComment(self): | ||
| discussion = self.g.get_repository_discussion("D_kwDOADYVqs4AaHoG", "id") | ||
| comment = discussion.add_comment("test comment", output_schema="id body") | ||
| self.assertEqual(comment.id, "DC_kwDOADYVqs4AovYk") | ||
| self.assertEqual(comment.body, "test comment") | ||
| reply = discussion.add_comment("test reply", reply_to=comment, output_schema="id body") | ||
| self.assertEqual(reply.id, "DC_kwDOADYVqs4AovYl") | ||
| self.assertEqual(reply.body, "test reply") | ||
| reply_by_id_str = discussion.add_comment( | ||
| "test reply by string id", reply_to=comment.id, output_schema="id body" | ||
| ) | ||
| self.assertEqual(reply_by_id_str.id, "DC_kwDOADYVqs4AovYm") | ||
| self.assertEqual(reply_by_id_str.body, "test reply by string id") | ||
| # cleanup that discussion | ||
| # replies have to be deleted first to be able to fully delete a comment | ||
| self.assertEqual(reply_by_id_str.delete().id, "DC_kwDOADYVqs4AovYm") | ||
| self.assertEqual(reply.delete().id, "DC_kwDOADYVqs4AovYl") | ||
| self.assertEqual(comment.delete().id, "DC_kwDOADYVqs4AovYk") |
@@ -16,5 +16,5 @@ name: Build package | ||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| - uses: actions/checkout@v4 | ||
| - name: Set up Python | ||
| uses: actions/setup-python@v4 | ||
| uses: actions/setup-python@v5 | ||
| with: | ||
@@ -30,5 +30,5 @@ python-version: '3.x' | ||
| - uses: actions/upload-artifact@v3 | ||
| - uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: ${{ inputs.artifact-name }} | ||
| path: dist |
@@ -36,3 +36,13 @@ name: Lint | ||
| python-version: "3.x" | ||
| - uses: pre-commit/action@v3.0.0 | ||
| # FIXME: pin pre-commit<4 pending PyCQA/docformatter#287 | ||
| - name: install pre-commit | ||
| run: python -m pip install 'pre-commit<4' | ||
| - name: show environment | ||
| run: python -m pip freeze --local | ||
| - uses: actions/cache@v4 | ||
| with: | ||
| path: ~/.cache/pre-commit | ||
| key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }} | ||
| - name: run pre-commit | ||
| run: pre-commit run --show-diff-on-failure --color=always --all-files | ||
@@ -39,0 +49,0 @@ docs: |
@@ -17,3 +17,3 @@ name: Publish to PyPI | ||
| steps: | ||
| - uses: actions/download-artifact@v3 | ||
| - uses: actions/download-artifact@v4 | ||
| with: | ||
@@ -20,0 +20,0 @@ name: package |
@@ -42,1 +42,10 @@ Utilities | ||
| .. autoclass:: github.InputGitTreeElement.InputGitTreeElement | ||
| Raw Requests | ||
| ------------ | ||
| If you need to make requests to APIs not yet supported by PyGithub, | ||
| you can use the :class:`.Requester` object directly, available as :attr:`object.requester` on most PyGithub objects. | ||
| .. autoclass:: github.Requester.Requester | ||
| :members: |
@@ -51,2 +51,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Chris Wells <ping@cwlls.com> # | ||
| # Copyright 2024 Eduardo Ramírez <edu.rh90@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
@@ -1070,2 +1071,13 @@ # Copyright 2024 Oskar Jansson <56458534+janssonoskar@users.noreply.github.com># | ||
| def get_organization_memberships(self) -> PaginatedList[Membership]: | ||
| """ | ||
| :calls: `GET /user/memberships/orgs/ <https://docs.github.com/en/rest/orgs/members#list-organization-memberships-for-the-authenticated-user>`_ | ||
| """ | ||
| return PaginatedList( | ||
| github.Membership.Membership, | ||
| self._requester, | ||
| "/user/memberships/orgs", | ||
| None, | ||
| ) | ||
| def get_organization_membership(self, org: str) -> Membership: | ||
@@ -1072,0 +1084,0 @@ """ |
+5
-5
@@ -128,7 +128,7 @@ ############################ Copyrights and license ############################ | ||
| {}, | ||
| None, | ||
| "files", | ||
| "total_files", | ||
| self.raw_data, | ||
| self.raw_headers, | ||
| headers=None, | ||
| list_item="files", | ||
| total_count_item="total_files", | ||
| firstData=self.raw_data, | ||
| firstHeaders=self.raw_headers, | ||
| ) | ||
@@ -135,0 +135,0 @@ |
@@ -94,7 +94,7 @@ ############################ Copyrights and license ############################ | ||
| {}, | ||
| None, | ||
| "commits", | ||
| "total_commits", | ||
| self.raw_data, | ||
| self.raw_headers, | ||
| headers=None, | ||
| list_item="commits", | ||
| total_count_item="total_commits", | ||
| firstData=self.raw_data, | ||
| firstHeaders=self.raw_headers, | ||
| ) | ||
@@ -101,0 +101,0 @@ |
@@ -94,4 +94,4 @@ ############################ Copyrights and license ############################ | ||
| url_parameters, | ||
| None, | ||
| "users", | ||
| headers=None, | ||
| list_item="users", | ||
| firstData=self.raw_data, | ||
@@ -98,0 +98,0 @@ firstHeaders=self.raw_headers, |
@@ -12,2 +12,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Min RK <benjaminrk@gmail.com> # | ||
| # # | ||
@@ -186,2 +187,12 @@ # This file is part of PyGithub. # | ||
| @property | ||
| def requester(self) -> Requester: | ||
| """ | ||
| Return my Requester object. | ||
| For example, to make requests to API endpoints not yet supported by PyGitHub. | ||
| """ | ||
| return self.__requester | ||
| def _get_headers(self) -> dict[str, str]: | ||
@@ -250,4 +261,6 @@ """ | ||
| :calls: `GET /repos/{owner}/{repo}/installation | ||
| <https://docs.github.com/en/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app>` | ||
| :calls:`GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository- | ||
| installation-for-the-authenticated-app>` | ||
| :calls:`GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository- | ||
| installation-for-the-authenticated-app>` | ||
@@ -254,0 +267,0 @@ """ |
@@ -31,2 +31,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Min RK <benjaminrk@gmail.com> # | ||
| # # | ||
@@ -52,2 +53,3 @@ # This file is part of PyGithub. # | ||
| import email.utils | ||
| import re | ||
| import typing | ||
@@ -57,3 +59,3 @@ from datetime import datetime, timezone | ||
| from operator import itemgetter | ||
| from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Type, Union | ||
| from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Type, Union, overload | ||
@@ -145,2 +147,58 @@ from typing_extensions import Protocol, TypeGuard | ||
| camel_to_snake_case_regexp = re.compile(r"(?<!^)(?=[A-Z])") | ||
| @overload | ||
| def as_rest_api_attributes(graphql_attributes: Dict[str, Any]) -> Dict[str, Any]: | ||
| ... | ||
| @overload | ||
| def as_rest_api_attributes(graphql_attributes: None) -> None: | ||
| ... | ||
| def as_rest_api_attributes(graphql_attributes: Optional[Dict[str, Any]]) -> Optional[Dict[str, Any]]: | ||
| """ | ||
| Converts attributes from GraphQL schema to REST API schema. | ||
| The GraphQL API uses lower camel case (e.g. createdAt), whereas REST API uses snake case (created_at). Initializing | ||
| REST API GithubObjects from GraphQL API attributes requires transformation provided by this method. | ||
| Further renames GraphQL attributes to REST API attributes where the case conversion is not sufficient. For example, | ||
| GraphQL attribute 'id' is equivalent to REST API attribute 'node_id'. | ||
| """ | ||
| if graphql_attributes is None: | ||
| return None | ||
| attribute_translation = { | ||
| "id": "node_id", | ||
| "databaseId": "id", # must be after 'id': 'node_id'! | ||
| "url": "html_url", | ||
| } | ||
| def translate(attr: str) -> str: | ||
| def un_capitalize(match: re.Match) -> str: | ||
| return match.group(1) + match.group(2).lower() | ||
| attr = attribute_translation.get(attr, attr) | ||
| attr = re.sub(r"([A-Z])([A-Z]+)", un_capitalize, attr) | ||
| attr = camel_to_snake_case_regexp.sub("_", attr) | ||
| attr = attr.lower() | ||
| return attr | ||
| return { | ||
| translate(k): as_rest_api_attributes(v) | ||
| if isinstance(v, dict) | ||
| else (as_rest_api_attributes_list(v) if isinstance(v, list) else v) | ||
| for k, v in graphql_attributes.items() | ||
| } | ||
| def as_rest_api_attributes_list(graphql_attributes: List[Optional[Dict[str, Any]]]) -> List[Optional[Dict[str, Any]]]: | ||
| return [as_rest_api_attributes(v) if isinstance(v, dict) else v for v in graphql_attributes] | ||
| class _ValuedAttribute(Attribute[T]): | ||
@@ -180,2 +238,10 @@ def __init__(self, value: T): | ||
| @classmethod | ||
| def is_rest(cls) -> bool: | ||
| return not cls.is_graphql() | ||
| @classmethod | ||
| def is_graphql(cls) -> bool: | ||
| return False | ||
| @classmethod | ||
| def setCheckAfterInitFlag(cls, flag: bool) -> None: | ||
@@ -208,2 +274,12 @@ cls.CHECK_AFTER_INIT_FLAG = flag | ||
| @property | ||
| def requester(self) -> "Requester": | ||
| """ | ||
| Return my Requester object. | ||
| For example, to make requests to API endpoints not yet supported by PyGitHub. | ||
| """ | ||
| return self._requester | ||
| @property | ||
| def raw_data(self) -> Dict[str, Any]: | ||
@@ -396,2 +472,8 @@ """ | ||
| class GraphQlObject: | ||
| @classmethod | ||
| def is_graphql(cls) -> bool: | ||
| return True | ||
| class NonCompletableGithubObject(GithubObject): | ||
@@ -398,0 +480,0 @@ def _completeIfNeeded(self) -> None: |
@@ -24,2 +24,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Min RK <benjaminrk@gmail.com> # | ||
| # # | ||
@@ -109,2 +110,12 @@ # This file is part of PyGithub. # | ||
| @property | ||
| def requester(self) -> Requester: | ||
| """ | ||
| Return my Requester object. | ||
| For example, to make requests to API endpoints not yet supported by PyGitHub. | ||
| """ | ||
| return self._requester | ||
| @property | ||
| def id(self) -> int: | ||
@@ -111,0 +122,0 @@ return self._id.value |
@@ -207,7 +207,7 @@ ############################ Copyrights and license ############################ | ||
| _, data = self._requester.graphql_named_mutation( | ||
| mutation_name="minimize_comment", | ||
| variables={"input": NotSet.remove_unset_items(variables)}, | ||
| output="minimizedComment { isMinimized }", | ||
| mutation_name="minimizeComment", | ||
| mutation_input=NotSet.remove_unset_items(variables), | ||
| output_schema="minimizedComment { isMinimized }", | ||
| ) | ||
| return data["data"]["minimizeComment"]["minimizedComment"]["isMinimized"] is True | ||
| return data["minimizedComment"]["isMinimized"] is True | ||
@@ -223,7 +223,7 @@ def unminimize(self) -> bool: | ||
| _, data = self._requester.graphql_named_mutation( | ||
| mutation_name="unminimize_comment", | ||
| variables={"input": NotSet.remove_unset_items(variables)}, | ||
| output="unminimizedComment { isMinimized }", | ||
| mutation_name="unminimizeComment", | ||
| mutation_input=NotSet.remove_unset_items(variables), | ||
| output_schema="unminimizedComment { isMinimized }", | ||
| ) | ||
| return data["data"]["unminimizeComment"]["unminimizedComment"]["isMinimized"] is False | ||
| return data["unminimizedComment"]["isMinimized"] is False | ||
@@ -230,0 +230,0 @@ def _useAttributes(self, attributes: dict[str, Any]) -> None: |
+18
-2
@@ -74,2 +74,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Min RK <benjaminrk@gmail.com> # | ||
| # # | ||
@@ -147,2 +148,3 @@ # This file is part of PyGithub. # | ||
| from github.Repository import Repository | ||
| from github.RepositoryDiscussion import RepositoryDiscussion | ||
| from github.Topic import Topic | ||
@@ -279,2 +281,12 @@ | ||
| @property | ||
| def requester(self) -> Requester: | ||
| """ | ||
| Return my Requester object. | ||
| For example, to make requests to API endpoints not yet supported by PyGitHub. | ||
| """ | ||
| return self.__requester | ||
| @property | ||
| def FIX_REPO_GET_GIT_REF(self) -> bool: | ||
@@ -322,4 +334,3 @@ return self.__requester.FIX_REPO_GET_GIT_REF | ||
| :calls: `GET /rate_limit | ||
| <https://docs.github.com/en/rest/reference/rate-limit>`_ | ||
| :calls:`GET /rate_limit <https://docs.github.com/en/rest/reference/rate-limit>`_ | ||
@@ -465,2 +476,7 @@ """ | ||
| def get_repository_discussion(self, node_id: str, discussion_graphql_schema: str) -> RepositoryDiscussion: | ||
| return self.__requester.graphql_node_class( | ||
| node_id, discussion_graphql_schema, github.RepositoryDiscussion.RepositoryDiscussion, "Discussion" | ||
| ) | ||
| def get_project(self, id: int) -> Project: | ||
@@ -467,0 +483,0 @@ """ |
+193
-64
@@ -121,3 +121,4 @@ ############################ Copyrights and license ############################ | ||
| """ | ||
| This class abstracts the `pagination of the API <https://docs.github.com/en/rest/guides/traversing-with-pagination>`_. | ||
| This class abstracts the `pagination of the REST API <https://docs.github.com/en/rest/guides/traversing-with-pagination>`_ | ||
| and the GraphQl API <https://docs.github.com/en/graphql/guides/using-pagination-in-the-graphql-api>`_. | ||
@@ -145,6 +146,10 @@ You can simply enumerate through instances of this class:: | ||
| some_repos = user.get_repos().get_page(0) | ||
| some_other_repos = user.get_repos().get_page(3) | ||
| repos = user.get_repos() | ||
| assert repos.is_rest, "get_page not supported by the GraphQL API" | ||
| some_repos = repos.get_page(0) | ||
| some_other_repos = repos.get_page(3) | ||
| """ | ||
| # v3: move * before firstUrl and fix call sites | ||
| def __init__( | ||
@@ -154,6 +159,7 @@ self, | ||
| requester: Requester, | ||
| firstUrl: str, | ||
| firstParams: Any, | ||
| firstUrl: Optional[str] = None, | ||
| firstParams: Optional[Dict[str, Any]] = None, | ||
| *, | ||
| headers: Optional[Dict[str, str]] = None, | ||
| list_item: str = "items", | ||
| list_item: Union[str, List[str]] = "items", | ||
| total_count_item: str = "total_count", | ||
@@ -163,9 +169,21 @@ firstData: Optional[Any] = None, | ||
| attributesTransformer: Optional[Callable[[Dict[str, Any]], Dict[str, Any]]] = None, | ||
| graphql_query: Optional[str] = None, | ||
| graphql_variables: Optional[Dict[str, Any]] = None, | ||
| ): | ||
| if firstUrl is None and firstData is None and graphql_query is None: | ||
| raise ValueError("Either firstUrl or graphql_query must be given") | ||
| if firstUrl is not None and graphql_query is not None: | ||
| raise ValueError("Only one of firstUrl or graphql_query can be given") | ||
| if graphql_query is not None: | ||
| if not (isinstance(list_item, list) and all(isinstance(item, str) for item in list_item)): | ||
| raise ValueError("With graphql_query given, item_list must be a list of strings") | ||
| self.__requester = requester | ||
| self.__contentClass = contentClass | ||
| self.__is_rest = firstUrl is not None or firstData is not None | ||
| self.__firstUrl = firstUrl | ||
| self.__firstParams = firstParams or () | ||
| self.__firstParams: Dict[str, Any] = firstParams or {} | ||
| self.__nextUrl = firstUrl | ||
| self.__nextParams = firstParams or {} | ||
| self.__nextParams: Dict[str, Any] = firstParams or {} | ||
| self.__headers = headers | ||
@@ -180,7 +198,22 @@ self.__list_item = list_item | ||
| self.__graphql_query = graphql_query | ||
| self.__graphql_variables = graphql_variables or {} | ||
| self.__page_info = None | ||
| first_page = [] | ||
| if firstData is not None and firstHeaders is not None: | ||
| if firstData is not None: | ||
| first_page = self._getPage(firstData, firstHeaders) | ||
| # this paginated list contains a single page | ||
| if self.__nextUrl is None and self.__totalCount is None: | ||
| self.__totalCount = len(first_page) | ||
| super().__init__(first_page) | ||
| @property | ||
| def is_rest(self) -> bool: | ||
| return self.__is_rest | ||
| @property | ||
| def is_graphql(self) -> bool: | ||
| return not self.is_rest | ||
| def _transformAttributes(self, element: Dict[str, Any]) -> Dict[str, Any]: | ||
@@ -193,25 +226,38 @@ if self._attributesTransformer is None: | ||
| def totalCount(self) -> int: | ||
| if not self.__totalCount: | ||
| params = {} if self.__nextParams is None else self.__nextParams.copy() | ||
| # set per_page = 1 so the totalCount is just the number of pages | ||
| params.update({"per_page": 1}) | ||
| headers, data = self.__requester.requestJsonAndCheck( | ||
| "GET", self.__firstUrl, parameters=params, headers=self.__headers | ||
| ) | ||
| if "link" not in headers: | ||
| if data and "total_count" in data: | ||
| self.__totalCount = data["total_count"] | ||
| elif data: | ||
| if isinstance(data, dict): | ||
| data = data[self.__list_item] | ||
| self.__totalCount = len(data) | ||
| if self.__totalCount is None: | ||
| if self.is_rest: | ||
| params = self.__nextParams.copy() | ||
| # set per_page = 1 so the totalCount is just the number of pages | ||
| params.update({"per_page": 1}) | ||
| headers, data = self.__requester.requestJsonAndCheck( | ||
| "GET", self.__firstUrl, parameters=params, headers=self.__headers # type: ignore | ||
| ) | ||
| if "link" not in headers: | ||
| if data and "total_count" in data: | ||
| self.__totalCount = data["total_count"] | ||
| elif data: | ||
| if isinstance(data, dict): | ||
| data = data[self.__list_item] | ||
| self.__totalCount = len(data) | ||
| else: | ||
| self.__totalCount = 0 | ||
| else: | ||
| self.__totalCount = 0 | ||
| links = self.__parseLinkHeader(headers) | ||
| lastUrl = links.get("last") | ||
| if lastUrl: | ||
| self.__totalCount = int(parse_qs(lastUrl)["page"][0]) | ||
| else: | ||
| self.__totalCount = 0 | ||
| else: | ||
| links = self.__parseLinkHeader(headers) | ||
| lastUrl = links.get("last") | ||
| if lastUrl: | ||
| self.__totalCount = int(parse_qs(lastUrl)["page"][0]) | ||
| variables = self.__graphql_variables.copy() | ||
| if not self._reversed: | ||
| variables["first"] = 1 | ||
| variables["after"] = None | ||
| else: | ||
| self.__totalCount = 0 | ||
| variables["last"] = 1 | ||
| variables["before"] = None | ||
| _, data = self.__requester.graphql_query(self.__graphql_query, variables) # type: ignore | ||
| pagination = self._get_graphql_pagination(data["data"], self.__list_item) # type: ignore | ||
| self.__totalCount = pagination.get("totalCount") | ||
| return self.__totalCount # type: ignore | ||
@@ -221,3 +267,3 @@ | ||
| headers, data = self.__requester.requestJsonAndCheck( | ||
| "GET", self.__firstUrl, parameters=self.__nextParams, headers=self.__headers | ||
| "GET", self.__firstUrl, parameters=self.__nextParams, headers=self.__headers # type: ignore | ||
| ) | ||
@@ -234,5 +280,7 @@ links = self.__parseLinkHeader(headers) | ||
| self.__firstParams, | ||
| self.__headers, | ||
| self.__list_item, | ||
| headers=self.__headers, | ||
| list_item=self.__list_item, | ||
| attributesTransformer=self._attributesTransformer, | ||
| graphql_query=self.__graphql_query, | ||
| graphql_variables=self.__graphql_variables, | ||
| ) | ||
@@ -244,41 +292,115 @@ r.__reverse() | ||
| self._reversed = True | ||
| lastUrl = self._getLastPageUrl() | ||
| if lastUrl: | ||
| self.__nextUrl = lastUrl | ||
| if self.is_rest: | ||
| lastUrl = self._getLastPageUrl() | ||
| if lastUrl: | ||
| self.__nextUrl = lastUrl | ||
| if self.__nextParams: | ||
| # #2929: remove all parameters from self.__nextParams contained in self.__nextUrl | ||
| self.__nextParams = { | ||
| k: v | ||
| for k, v in self.__nextParams.items() | ||
| if k not in Requester.get_parameters_of_url(self.__nextUrl).keys() | ||
| } | ||
| def _couldGrow(self) -> bool: | ||
| return self.__nextUrl is not None | ||
| return ( | ||
| self.is_rest | ||
| and self.__nextUrl is not None | ||
| or self.is_graphql | ||
| and ( | ||
| self.__page_info is None | ||
| or not self._reversed | ||
| and self.__page_info["hasNextPage"] | ||
| or self._reversed | ||
| and self.__page_info["hasPreviousPage"] | ||
| ) | ||
| ) | ||
| def _get_graphql_pagination(self, data: Dict[str, Any], path: List[str]) -> Dict[str, Any]: | ||
| for item in path: | ||
| if item not in data: | ||
| raise RuntimeError(f"Pagination path {path} not found in data: {self.paths_of_dict(data)}") | ||
| data = data[item] | ||
| return data | ||
| def _fetchNextPage(self) -> List[T]: | ||
| headers, data = self.__requester.requestJsonAndCheck( | ||
| "GET", self.__nextUrl, parameters=self.__nextParams, headers=self.__headers | ||
| ) | ||
| data = data if data else [] | ||
| return self._getPage(data, headers) | ||
| if self.is_rest: | ||
| # REST API pagination | ||
| headers, data = self.__requester.requestJsonAndCheck( | ||
| "GET", self.__nextUrl, parameters=self.__nextParams, headers=self.__headers # type: ignore | ||
| ) | ||
| data = data if data else [] | ||
| return self._getPage(data, headers) | ||
| else: | ||
| # GraphQL API pagination | ||
| variables = self.__graphql_variables.copy() | ||
| if not self._reversed: | ||
| variables["first"] = self.__requester.per_page | ||
| if self.__page_info is not None: | ||
| variables["after"] = self.__page_info["endCursor"] | ||
| else: | ||
| variables["last"] = self.__requester.per_page | ||
| if self.__page_info is not None: | ||
| variables["before"] = self.__page_info["startCursor"] | ||
| def _getPage(self, data: Any, headers: Dict[str, Any]) -> List[T]: | ||
| self.__nextUrl = None # type: ignore | ||
| if len(data) > 0: | ||
| links = self.__parseLinkHeader(headers) | ||
| _, data = self.__requester.graphql_query(self.__graphql_query, variables) # type: ignore | ||
| pagination = self._get_graphql_pagination(data["data"], self.__list_item) # type: ignore | ||
| return self._getPage(pagination, {}) | ||
| def _getPage(self, data: Any, headers: Optional[Dict[str, Union[str, int]]]) -> List[T]: | ||
| if self.is_rest: | ||
| self.__nextUrl = None # type: ignore | ||
| if len(data) > 0: | ||
| links = self.__parseLinkHeader(headers) # type: ignore | ||
| if self._reversed: | ||
| if "prev" in links: | ||
| self.__nextUrl = links["prev"] | ||
| elif "next" in links: | ||
| self.__nextUrl = links["next"] | ||
| self.__nextParams = {} | ||
| if self.__list_item in data: | ||
| self.__totalCount = data.get(self.__total_count_item) | ||
| data = data[self.__list_item] | ||
| content = [ | ||
| self.__contentClass(self.__requester, headers, self._transformAttributes(element), completed=False) # type: ignore | ||
| for element in data | ||
| if element is not None | ||
| ] | ||
| if self._reversed: | ||
| if "prev" in links: | ||
| self.__nextUrl = links["prev"] | ||
| elif "next" in links: | ||
| self.__nextUrl = links["next"] | ||
| self.__nextParams = None | ||
| if self.__list_item in data: | ||
| self.__totalCount = data.get(self.__total_count_item) | ||
| data = data[self.__list_item] | ||
| content = [ | ||
| self.__contentClass(self.__requester, headers, self._transformAttributes(element), completed=False) | ||
| for element in data | ||
| if element is not None | ||
| ] | ||
| if self._reversed: | ||
| return content[::-1] | ||
| return content | ||
| return content[::-1] | ||
| return content | ||
| else: | ||
| if "pageInfo" not in data: | ||
| raise RuntimeError(f"Query must provide pagination with pageInfo:\n{self.__graphql_query}") | ||
| def __parseLinkHeader(self, headers: Dict[str, str]) -> Dict[str, str]: | ||
| self.__page_info = data["pageInfo"] | ||
| if any( | ||
| item not in self.__page_info # type: ignore | ||
| for item in ["startCursor", "endCursor", "hasNextPage", "hasPreviousPage"] | ||
| ): | ||
| raise RuntimeError(f"Query must provide pagination with pageInfo\n{self.__graphql_query}") | ||
| if self.__totalCount is None: | ||
| if "totalCount" not in data: | ||
| raise RuntimeError(f"Query must provide totalCount\n{self.__graphql_query}") | ||
| self.__totalCount = data["totalCount"] | ||
| if "nodes" not in data: | ||
| raise RuntimeError( | ||
| f"No nodes found under pagination path {self.__list_item}: {self.paths_of_dict(data)}" | ||
| ) | ||
| nodes = data["nodes"] | ||
| if self._reversed: | ||
| nodes = nodes[::-1] | ||
| return [ | ||
| self.__contentClass(self.__requester, {}, element, completed=False) | ||
| for element in nodes | ||
| if element is not None | ||
| ] | ||
| def __parseLinkHeader(self, headers: Dict[str, Union[str, int]]) -> Dict[str, str]: | ||
| links = {} | ||
| if "link" in headers: | ||
| if "link" in headers and isinstance(headers["link"], str): | ||
| linkHeaders = headers["link"].split(", ") | ||
@@ -293,2 +415,5 @@ for linkHeader in linkHeaders: | ||
| def get_page(self, page: int) -> List[T]: | ||
| if self.is_graphql: | ||
| raise RuntimeError("Not supported for GraphQL pagination") | ||
| params = dict(self.__firstParams) | ||
@@ -300,3 +425,3 @@ if page != 0: | ||
| headers, data = self.__requester.requestJsonAndCheck( | ||
| "GET", self.__firstUrl, parameters=params, headers=self.__headers | ||
| "GET", self.__firstUrl, parameters=params, headers=self.__headers # type: ignore | ||
| ) | ||
@@ -331,1 +456,5 @@ | ||
| return d1 | ||
| @classmethod | ||
| def paths_of_dict(cls, d: dict) -> dict: | ||
| return {key: cls.paths_of_dict(val) if isinstance(val, dict) else None for key, val in d.items()} |
@@ -204,3 +204,3 @@ ############################ Copyrights and license ############################ | ||
| None, | ||
| {"Accept": Consts.mediaTypeProjectsPreview}, | ||
| headers={"Accept": Consts.mediaTypeProjectsPreview}, | ||
| ) | ||
@@ -207,0 +207,0 @@ |
@@ -132,3 +132,3 @@ ############################ Copyrights and license ############################ | ||
| url_parameters, | ||
| {"Accept": Consts.mediaTypeProjectsPreview}, | ||
| headers={"Accept": Consts.mediaTypeProjectsPreview}, | ||
| ) | ||
@@ -135,0 +135,0 @@ |
@@ -49,2 +49,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Evan Fetsko <emfetsko@gmail.com> # | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
@@ -781,3 +782,3 @@ # Copyright 2024 Kobbi Gal <85439776+kgal-pan@users.noreply.github.com> # | ||
| if not force: | ||
| remaining_pulls = self.head.repo.get_pulls(head=self.head.ref) | ||
| remaining_pulls = self.head.repo.get_pulls(head=f"{self.head.repo.owner.login}:{self.head.ref}") | ||
| if remaining_pulls.totalCount > 0: | ||
@@ -822,5 +823,5 @@ raise RuntimeError( | ||
| _, data = self._requester.graphql_named_mutation( | ||
| mutation_name="enable_pull_request_auto_merge", | ||
| variables={"input": NotSet.remove_unset_items(variables)}, | ||
| output="actor { avatarUrl login resourcePath url } clientMutationId", | ||
| mutation_name="enablePullRequestAutoMerge", | ||
| mutation_input=NotSet.remove_unset_items(variables), | ||
| output_schema="actor { avatarUrl login resourcePath url } clientMutationId", | ||
| ) | ||
@@ -847,5 +848,5 @@ return data | ||
| _, data = self._requester.graphql_named_mutation( | ||
| mutation_name="disable_pull_request_auto_merge", | ||
| variables={"input": NotSet.remove_unset_items(variables)}, | ||
| output="actor { avatarUrl login resourcePath url } clientMutationId", | ||
| mutation_name="disablePullRequestAutoMerge", | ||
| mutation_input=NotSet.remove_unset_items(variables), | ||
| output_schema="actor { avatarUrl login resourcePath url } clientMutationId", | ||
| ) | ||
@@ -852,0 +853,0 @@ return data |
+177
-22
@@ -59,2 +59,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Kobbi Gal <85439776+kgal-pan@users.noreply.github.com> # | ||
| # Copyright 2024 Min RK <benjaminrk@gmail.com> # | ||
| # # | ||
@@ -114,3 +115,5 @@ # This file is part of PyGithub. # | ||
| import github.Consts as Consts | ||
| import github.GithubException | ||
| import github.GithubException as GithubException | ||
| from github.GithubObject import as_rest_api_attributes | ||
@@ -124,2 +127,3 @@ if TYPE_CHECKING: | ||
| T = TypeVar("T") | ||
| T_gh = TypeVar("T_gh", bound="GithubObject") | ||
@@ -477,2 +481,25 @@ # For App authentication, time remaining before token expiration to request a new one | ||
| @staticmethod | ||
| def get_parameters_of_url(url: str) -> Dict[str, list]: | ||
| query = urllib.parse.urlparse(url)[4] | ||
| return urllib.parse.parse_qs(query) | ||
| @staticmethod | ||
| def add_parameters_to_url( | ||
| url: str, | ||
| parameters: Dict[str, Any], | ||
| ) -> str: | ||
| scheme, netloc, url, params, query, fragment = urllib.parse.urlparse(url) | ||
| url_params = urllib.parse.parse_qs(query) | ||
| # union parameters in url with given parameters, the latter have precedence | ||
| url_params.update(**{k: v if isinstance(v, list) else [v] for k, v in parameters.items()}) | ||
| parameter_list = [(key, value) for key, values in url_params.items() for value in values] | ||
| # remove query from url | ||
| url = urllib.parse.urlunparse((scheme, netloc, url, params, "", fragment)) | ||
| if len(parameter_list) == 0: | ||
| return url | ||
| else: | ||
| return f"{url}?{urllib.parse.urlencode(parameter_list)}" | ||
| def close(self) -> None: | ||
@@ -554,2 +581,11 @@ """ | ||
| ) -> Tuple[Dict[str, Any], Any]: | ||
| """ | ||
| Send a request with JSON body. | ||
| :param input: request body, serialized to JSON if specified | ||
| :return: ``(headers: dict, JSON Response: Any)`` | ||
| :raises: :class:`GithubException` for error status codes | ||
| """ | ||
| return self.__check(*self.requestJson(verb, url, parameters, headers, input, self.__customConnection(url))) | ||
@@ -565,2 +601,11 @@ | ||
| ) -> Tuple[Dict[str, Any], Optional[Dict[str, Any]]]: | ||
| """ | ||
| Send a request with multi-part-encoded body. | ||
| :param input: request body, will be multi-part encoded if specified | ||
| :return: ``(headers: dict, JSON Response: Any)`` | ||
| :raises: :class:`GithubException` for error status codes | ||
| """ | ||
| return self.__check(*self.requestMultipart(verb, url, parameters, headers, input, self.__customConnection(url))) | ||
@@ -577,2 +622,11 @@ | ||
| ) -> Tuple[Dict[str, Any], Dict[str, Any]]: | ||
| """ | ||
| Send a request with a file for the body. | ||
| :param input: path to a file to use for the request body | ||
| :return: ``(headers: dict, JSON Response: Any)`` | ||
| :raises: :class:`GithubException` for error status codes | ||
| """ | ||
| return self.__check(*self.requestBlob(verb, url, parameters, headers, input, self.__customConnection(url))) | ||
@@ -588,24 +642,103 @@ | ||
| if "errors" in data: | ||
| if len(data["errors"]) == 1: | ||
| error = data["errors"][0] | ||
| if error.get("type") == "NOT_FOUND": | ||
| raise github.UnknownObjectException(404, data, response_headers, error.get("message")) | ||
| raise self.createException(400, response_headers, data) | ||
| return response_headers, data | ||
| @classmethod | ||
| def paths_of_dict(cls, d: dict) -> dict: | ||
| return {key: cls.paths_of_dict(val) if isinstance(val, dict) else None for key, val in d.items()} | ||
| def data_as_class( | ||
| self, headers: Dict[str, Any], data: Dict[str, Any], data_path: List[str], klass: Type[T_gh] | ||
| ) -> T_gh: | ||
| for item in data_path: | ||
| if item not in data: | ||
| raise RuntimeError(f"GraphQL path {data_path} not found in data: {self.paths_of_dict(data)}") | ||
| data = data[item] | ||
| if klass.is_rest(): | ||
| data = as_rest_api_attributes(data) | ||
| return klass(self, headers, data, completed=False) | ||
| def graphql_node(self, node_id: str, graphql_schema: str, node_type: str) -> Tuple[Dict[str, Any], Dict[str, Any]]: | ||
| """ | ||
| :calls: `POST /graphql <https://docs.github.com/en/graphql>`_ | ||
| """ | ||
| if not graphql_schema.startswith("\n"): | ||
| graphql_schema = f" {graphql_schema} " | ||
| query = ( | ||
| """ | ||
| query Q($id: ID!) { | ||
| node(id: $id) { | ||
| __typename | ||
| ... on """ | ||
| + f"{node_type} {{{graphql_schema}}}" | ||
| + """ | ||
| } | ||
| } | ||
| """ | ||
| ) | ||
| headers, data = self.graphql_query(query, {"id": node_id}) | ||
| actual_node_type = data.get("data", {}).get("node", {}).get("__typename", node_type) | ||
| if actual_node_type != node_type: | ||
| raise github.GithubException( | ||
| 400, | ||
| data, | ||
| message=f"Retrieved {node_type} object is of different type: {actual_node_type}", | ||
| ) | ||
| return headers, data | ||
| def graphql_node_class( | ||
| self, node_id: str, graphql_schema: str, klass: Type[T_gh], node_type: Optional[str] = None | ||
| ) -> T_gh: | ||
| """ | ||
| :calls: `POST /graphql <https://docs.github.com/en/graphql>`_ | ||
| """ | ||
| if node_type is None: | ||
| node_type = klass.__name__ | ||
| headers, data = self.graphql_node(node_id, graphql_schema, node_type) | ||
| return self.data_as_class(headers, data, ["data", "node"], klass) | ||
| def graphql_query_class( | ||
| self, query: str, variables: Dict[str, Any], data_path: List[str], klass: Type[T_gh] | ||
| ) -> T_gh: | ||
| """ | ||
| :calls: `POST /graphql <https://docs.github.com/en/graphql>`_ | ||
| """ | ||
| headers, data = self.graphql_query(query, variables) | ||
| return self.data_as_class(headers, data, ["data"] + data_path, klass) | ||
| def graphql_named_mutation( | ||
| self, mutation_name: str, variables: Dict[str, Any], output: Optional[str] = None | ||
| self, mutation_name: str, mutation_input: Dict[str, Any], output_schema: str | ||
| ) -> Tuple[Dict[str, Any], Dict[str, Any]]: | ||
| """ | ||
| Create a mutation in the format: | ||
| mutation MutationName($input: MutationNameInput!) { | ||
| mutationName(input: $input) { | ||
| <output> | ||
| } | ||
| mutation Mutation($input: MutationNameInput!) { | ||
| mutationName(input: $input) { <output_schema> } | ||
| } | ||
| and call the self.graphql_query method | ||
| and call the self.graphql_query method. | ||
| Returns the response data according to given output schema. | ||
| """ | ||
| title = "".join([x.capitalize() for x in mutation_name.split("_")]) | ||
| mutation_name = title[:1].lower() + title[1:] | ||
| output = output or "" | ||
| query = f"mutation {title}($input: {title}Input!) {{ {mutation_name}(input: $input) {{ {output} }} }}" | ||
| mutation_input_name = mutation_name[:1].upper() + mutation_name[1:] + "Input!" | ||
| query = f"mutation Mutation($input: {mutation_input_name}) {{ {mutation_name}(input: $input) {{ {output_schema} }} }}" | ||
| headers, data = self.graphql_query(query, {"input": mutation_input}) | ||
| return headers, data.get("data", {}).get(mutation_name, {}) | ||
| return self.graphql_query(query, variables) | ||
| def graphql_named_mutation_class( | ||
| self, mutation_name: str, mutation_input: Dict[str, Any], output_schema: str, item: str, klass: Type[T_gh] | ||
| ) -> T_gh: | ||
| """ | ||
| Executes a mutation and returns the output object as the given GithubObject. | ||
| See {@link graphql_named_mutation}. | ||
| """ | ||
| headers, data = self.graphql_named_mutation(mutation_name, mutation_input, output_schema) | ||
| return self.data_as_class(headers, data, [item], klass) | ||
| def __check( | ||
@@ -720,2 +853,10 @@ self, | ||
| ) -> Tuple[int, Dict[str, Any], str]: | ||
| """ | ||
| Send a request with JSON input. | ||
| :param input: request body, will be serialized as JSON | ||
| :returns:``(status, headers, body)`` | ||
| """ | ||
| def encode(input: Any) -> Tuple[str, str]: | ||
@@ -735,2 +876,10 @@ return "application/json", json.dumps(input) | ||
| ) -> Tuple[int, Dict[str, Any], str]: | ||
| """ | ||
| Send a request with multi-part encoding. | ||
| :param input: request body, will be serialized as multipart form data | ||
| :returns:``(status, headers, body)`` | ||
| """ | ||
| def encode(input: Dict[str, Any]) -> Tuple[str, str]: | ||
@@ -760,2 +909,9 @@ boundary = "----------------------------3c3ba8b523b2" | ||
| ) -> Tuple[int, Dict[str, Any], str]: | ||
| """ | ||
| Send a request with a file as request body. | ||
| :param input: path to a local file to use for request body | ||
| :returns:``(status, headers, body)`` | ||
| """ | ||
| if headers is None: | ||
@@ -786,2 +942,11 @@ headers = {} | ||
| ) -> Tuple[Dict[str, Any], Any]: | ||
| """ | ||
| Send a request with a binary file-like for the body. | ||
| :param file_like: file-like object to use for the request body | ||
| :return: ``(headers: dict, JSON Response: Any)`` | ||
| :raises: :class:`GithubException` for error status codes | ||
| """ | ||
| # The expected signature of encode means that the argument is ignored. | ||
@@ -816,3 +981,3 @@ def encode(_: Any) -> Tuple[str, Any]: | ||
| url = self.__makeAbsoluteUrl(url) | ||
| url = self.__addParametersToUrl(url, parameters) | ||
| url = Requester.add_parameters_to_url(url, parameters) | ||
@@ -953,12 +1118,2 @@ encoded_input = None | ||
| def __addParametersToUrl( | ||
| self, | ||
| url: str, | ||
| parameters: Dict[str, Any], | ||
| ) -> str: | ||
| if len(parameters) == 0: | ||
| return url | ||
| else: | ||
| return f"{url}?{urllib.parse.urlencode(parameters)}" | ||
| def __createConnection( | ||
@@ -965,0 +1120,0 @@ self, |
@@ -47,11 +47,9 @@ ############################ Copyrights and license ############################ | ||
| from datetime import datetime | ||
| from typing import Any | ||
| import github.GithubObject | ||
| import github.NamedUser | ||
| from github.GithubObject import Attribute, CompletableGithubObject, NotSet | ||
| from github.DiscussionBase import DiscussionBase | ||
| from github.GithubObject import Attribute, NotSet | ||
| class TeamDiscussion(CompletableGithubObject): | ||
| class TeamDiscussion(DiscussionBase): | ||
| """ | ||
@@ -66,39 +64,13 @@ This class represents TeamDiscussions. | ||
| def _initAttributes(self) -> None: | ||
| self._author: Attribute[github.NamedUser.NamedUser] = NotSet | ||
| self._body: Attribute[str] = NotSet | ||
| self._body_html: Attribute[str] = NotSet | ||
| super()._initAttributes() | ||
| self._body_version: Attribute[str] = NotSet | ||
| self._comments_count: Attribute[int] = NotSet | ||
| self._comments_url: Attribute[str] = NotSet | ||
| self._created_at: Attribute[datetime] = NotSet | ||
| self._html_url: Attribute[str] = NotSet | ||
| self._last_edited_at: Attribute[datetime] = NotSet | ||
| self._node_id: Attribute[str] = NotSet | ||
| self._number: Attribute[int] = NotSet | ||
| self._pinned: Attribute[bool] = NotSet | ||
| self._private: Attribute[bool] = NotSet | ||
| self._team_url: Attribute[str] = NotSet | ||
| self._title: Attribute[str] = NotSet | ||
| self._updated_at: Attribute[datetime] = NotSet | ||
| self._url: Attribute[str] = NotSet | ||
| def __repr__(self) -> str: | ||
| return self.get__repr__({"number": self._number.value, "title": self._title.value}) | ||
| @property | ||
| def author(self) -> github.NamedUser.NamedUser: | ||
| self._completeIfNotSet(self._author) | ||
| return self._author.value | ||
| @property | ||
| def body(self) -> str: | ||
| self._completeIfNotSet(self._body) | ||
| return self._body.value | ||
| @property | ||
| def body_html(self) -> str: | ||
| self._completeIfNotSet(self._body_html) | ||
| return self._body_html.value | ||
| @property | ||
| def body_version(self) -> str: | ||
@@ -119,7 +91,2 @@ self._completeIfNotSet(self._body_version) | ||
| @property | ||
| def created_at(self) -> datetime: | ||
| self._completeIfNotSet(self._created_at) | ||
| return self._created_at.value | ||
| @property | ||
| def html_url(self) -> str: | ||
@@ -130,7 +97,2 @@ self._completeIfNotSet(self._html_url) | ||
| @property | ||
| def last_edited_at(self) -> datetime: | ||
| self._completeIfNotSet(self._last_edited_at) | ||
| return self._last_edited_at.value | ||
| @property | ||
| def node_id(self) -> str: | ||
@@ -141,7 +103,2 @@ self._completeIfNotSet(self._node_id) | ||
| @property | ||
| def number(self) -> int: | ||
| self._completeIfNotSet(self._number) | ||
| return self._number.value | ||
| @property | ||
| def pinned(self) -> bool: | ||
@@ -161,24 +118,4 @@ self._completeIfNotSet(self._pinned) | ||
| @property | ||
| def title(self) -> str: | ||
| self._completeIfNotSet(self._title) | ||
| return self._title.value | ||
| @property | ||
| def updated_at(self) -> datetime: | ||
| self._completeIfNotSet(self._updated_at) | ||
| return self._updated_at.value | ||
| @property | ||
| def url(self) -> str: | ||
| self._completeIfNotSet(self._url) | ||
| return self._url.value | ||
| def _useAttributes(self, attributes: dict[str, Any]) -> None: | ||
| if "author" in attributes: # pragma no branch | ||
| self._author = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["author"]) | ||
| if "body" in attributes: # pragma no branch | ||
| self._body = self._makeStringAttribute(attributes["body"]) | ||
| if "body_html" in attributes: # pragma no branch | ||
| self._body_html = self._makeStringAttribute(attributes["body_html"]) | ||
| super()._useAttributes(attributes) | ||
| if "body_version" in attributes: # pragma no branch | ||
@@ -190,12 +127,6 @@ self._body_version = self._makeStringAttribute(attributes["body_version"]) | ||
| self._comments_url = self._makeStringAttribute(attributes["comments_url"]) | ||
| if "created_at" in attributes: # pragma no branch | ||
| self._created_at = self._makeDatetimeAttribute(attributes["created_at"]) | ||
| if "html_url" in attributes: # pragma no branch | ||
| self._html_url = self._makeStringAttribute(attributes["html_url"]) | ||
| if "last_edited_at" in attributes: # pragma no branch | ||
| self._last_edited_at = self._makeDatetimeAttribute(attributes["last_edited_at"]) | ||
| if "node_id" in attributes: # pragma no branch | ||
| self._node_id = self._makeStringAttribute(attributes["node_id"]) | ||
| if "number" in attributes: # pragma no branch | ||
| self._number = self._makeIntAttribute(attributes["number"]) | ||
| if "pinned" in attributes: # pragma no branch | ||
@@ -207,7 +138,1 @@ self._pinned = self._makeBoolAttribute(attributes["pinned"]) | ||
| self._team_url = self._makeStringAttribute(attributes["team_url"]) | ||
| if "title" in attributes: | ||
| self._title = self._makeStringAttribute(attributes["title"]) | ||
| if "updated_at" in attributes: # pragma no branch | ||
| self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"]) | ||
| if "url" in attributes: # pragma no branch | ||
| self._url = self._makeStringAttribute(attributes["url"]) |
@@ -198,3 +198,3 @@ ############################ Copyrights and license ############################ | ||
| url_parameters, | ||
| None, | ||
| headers=None, | ||
| list_item="workflow_runs", | ||
@@ -201,0 +201,0 @@ ) |
@@ -15,2 +15,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Geoffrey <geoffrey@moveparallel.com> # | ||
| # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
@@ -42,2 +43,3 @@ # # | ||
| import github.GitCommit | ||
| import github.NamedUser | ||
| import github.PullRequest | ||
@@ -51,2 +53,3 @@ import github.WorkflowJob | ||
| from github.GitCommit import GitCommit | ||
| from github.NamedUser import NamedUser | ||
| from github.PullRequest import PullRequest | ||
@@ -82,2 +85,3 @@ from github.Repository import Repository | ||
| self._updated_at: Attribute[datetime] = NotSet | ||
| self._actor: Attribute[NamedUser] = NotSet | ||
| self._pull_requests: Attribute[list[PullRequest]] = NotSet | ||
@@ -195,2 +199,7 @@ self._status: Attribute[str] = NotSet | ||
| @property | ||
| def actor(self) -> NamedUser: | ||
| self._completeIfNotSet(self._actor) | ||
| return self._actor.value | ||
| @property | ||
| def jobs_url(self) -> str: | ||
@@ -348,2 +357,4 @@ self._completeIfNotSet(self._jobs_url) | ||
| self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"]) | ||
| if "actor" in attributes: # pragma no branch | ||
| self._actor = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["actor"]) | ||
| if "jobs_url" in attributes: # pragma no branch | ||
@@ -350,0 +361,0 @@ self._jobs_url = self._makeStringAttribute(attributes["jobs_url"]) |
+1
-1
| Metadata-Version: 2.1 | ||
| Name: PyGithub | ||
| Version: 2.4.0 | ||
| Version: 2.5.0 | ||
| Summary: Use the full Github API v3 | ||
@@ -5,0 +5,0 @@ Author-email: Vincent Jacques <vincent@vincent-jacques.net> |
| Metadata-Version: 2.1 | ||
| Name: PyGithub | ||
| Version: 2.4.0 | ||
| Version: 2.5.0 | ||
| Summary: Use the full Github API v3 | ||
@@ -5,0 +5,0 @@ Author-email: Vincent Jacques <vincent@vincent-jacques.net> |
@@ -17,3 +17,2 @@ .git-blame-ignore-revs | ||
| .github/release-drafter.yml | ||
| .github/stale.yml | ||
| .github/workflows/_build-pkg.yml | ||
@@ -23,2 +22,3 @@ .github/workflows/ci.yml | ||
| .github/workflows/pypi-release.yml | ||
| .github/workflows/top-issues.yaml | ||
| PyGithub.egg-info/PKG-INFO | ||
@@ -92,2 +92,4 @@ PyGithub.egg-info/SOURCES.txt | ||
| github/DeploymentStatus.py | ||
| github/DiscussionBase.py | ||
| github/DiscussionCommentBase.py | ||
| github/Download.py | ||
@@ -171,2 +173,5 @@ github/Enterprise.py | ||
| github/RepositoryAdvisory.py | ||
| github/RepositoryDiscussion.py | ||
| github/RepositoryDiscussionCategory.py | ||
| github/RepositoryDiscussionComment.py | ||
| github/RepositoryKey.py | ||
@@ -320,2 +325,3 @@ github/RepositoryPreferences.py | ||
| tests/RepositoryAdvisory.py | ||
| tests/RepositoryDiscussion.py | ||
| tests/RepositoryKey.py | ||
@@ -383,2 +389,3 @@ tests/Requester.py | ||
| tests/ReplayData/AuthenticatedUser.testGetKeys.txt | ||
| tests/ReplayData/AuthenticatedUser.testGetMemberships.txt | ||
| tests/ReplayData/AuthenticatedUser.testGetMigrations.txt | ||
@@ -595,2 +602,3 @@ tests/ReplayData/AuthenticatedUser.testGetNotification.txt | ||
| tests/ReplayData/Github.testGetReposSince.txt | ||
| tests/ReplayData/Github.testGetRepositoryDiscussion.txt | ||
| tests/ReplayData/Github.testGetUserById.txt | ||
@@ -623,4 +631,12 @@ tests/ReplayData/Github.testGetUsers.txt | ||
| tests/ReplayData/GraphQl.testDefaultUrl.txt | ||
| tests/ReplayData/GraphQl.testMutation.txt | ||
| tests/ReplayData/GraphQl.testMutationClass.txt | ||
| tests/ReplayData/GraphQl.testNode.txt | ||
| tests/ReplayData/GraphQl.testNodeClass.txt | ||
| tests/ReplayData/GraphQl.testOtherPort.txt | ||
| tests/ReplayData/GraphQl.testOtherUrl.txt | ||
| tests/ReplayData/GraphQl.testPaginationAndRestIntegration.txt | ||
| tests/ReplayData/GraphQl.testQuery.txt | ||
| tests/ReplayData/GraphQl.testQueryGraphQlClass.txt | ||
| tests/ReplayData/GraphQl.testQueryRestClass.txt | ||
| tests/ReplayData/Hook.setUp.txt | ||
@@ -862,2 +878,4 @@ tests/ReplayData/Hook.testDelete.txt | ||
| tests/ReplayData/PaginatedList.testCustomPerPage.txt | ||
| tests/ReplayData/PaginatedList.testCustomPerPageIteration.txt | ||
| tests/ReplayData/PaginatedList.testCustomPerPageReversedIteration.txt | ||
| tests/ReplayData/PaginatedList.testCustomPerPageWithGetPage.txt | ||
@@ -868,2 +886,3 @@ tests/ReplayData/PaginatedList.testCustomPerPageWithNoUrlParams2.txt | ||
| tests/ReplayData/PaginatedList.testGettingTheReversedListDoesNotModifyTheOriginalList.txt | ||
| tests/ReplayData/PaginatedList.testGraphQlPagination.txt | ||
| tests/ReplayData/PaginatedList.testIntIndexingAfterIteration.txt | ||
@@ -1079,2 +1098,7 @@ tests/ReplayData/PaginatedList.testIntIndexingInFirstPage.txt | ||
| tests/ReplayData/Repository.testGetDeployments.txt | ||
| tests/ReplayData/Repository.testGetDiscussion.txt | ||
| tests/ReplayData/Repository.testGetDiscussions.txt | ||
| tests/ReplayData/Repository.testGetDiscussionsByAnswered.txt | ||
| tests/ReplayData/Repository.testGetDiscussionsByCategory.txt | ||
| tests/ReplayData/Repository.testGetDiscussionsByStates.txt | ||
| tests/ReplayData/Repository.testGetDownloads.txt | ||
@@ -1155,2 +1179,6 @@ tests/ReplayData/Repository.testGetEvents.txt | ||
| tests/ReplayData/RepositoryAdvisory.testUpdateSingleFieldDoesNotRemoveOtherFields.txt | ||
| tests/ReplayData/RepositoryDiscussion.setUp.txt | ||
| tests/ReplayData/RepositoryDiscussion.testAddAndDeleteComment.txt | ||
| tests/ReplayData/RepositoryDiscussion.testGetComments.txt | ||
| tests/ReplayData/RepositoryDiscussion.testGetCommentsWithoutNodeId.txt | ||
| tests/ReplayData/RepositoryKey.setUp.txt | ||
@@ -1157,0 +1185,0 @@ tests/ReplayData/RepositoryKey.testDelete.txt |
@@ -15,2 +15,3 @@ #!/usr/bin/env python | ||
| # Copyright 2023 Jonathan Leitschuh <jonathan.leitschuh@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
@@ -17,0 +18,0 @@ # This file is part of PyGithub. # |
@@ -32,2 +32,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Chris Wells <ping@cwlls.com> # | ||
| # Copyright 2024 Eduardo Ramírez <edu.rh90@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
@@ -787,1 +788,12 @@ # Copyright 2024 Oskar Jansson <56458534+janssonoskar@users.noreply.github.com># | ||
| self.assertEqual(installations.totalCount, 1) | ||
| def testGetMemberships(self): | ||
| membership_data = self.user.get_organization_memberships() | ||
| self.assertListKeyEqual( | ||
| membership_data, | ||
| lambda e: e.organization.login, | ||
| ["aneyem-github", "nko4", "geoservel", "iic2154-uc-cl", "nnodes", "sushiclm"], | ||
| ) | ||
| self.assertListKeyEqual( | ||
| membership_data, lambda e: e.role, ["member", "member", "admin", "member", "member", "admin"] | ||
| ) |
@@ -21,2 +21,4 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 chantra <chantra@users.noreply.github.com> # | ||
| # Copyright 2024 Bernhard M. Wiedemann <githubbmwprimary@lsmod.de> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Jonathan Kliem <jonathan.kliem@gmail.com> # | ||
@@ -180,6 +182,4 @@ # # | ||
| # test token expiry | ||
| # token expires 2024-11-25 01:00:02 | ||
| token = installation_auth.token | ||
| self.assertFalse(installation_auth._is_expired) | ||
| self.assertEqual( | ||
@@ -190,3 +190,4 @@ installation_auth._AppInstallationAuth__installation_authorization.expires_at, | ||
| # forward the clock so token expires | ||
| # test token expiry | ||
| # control the current time used by _is_expired | ||
| with mock.patch("github.Auth.datetime") as dt: | ||
@@ -210,5 +211,5 @@ # just before expiry | ||
| # use the token | ||
| self.assertEqual(g.get_user("ammarmallik").name, "Ammar Akbar") | ||
| self.assertEqual(g.get_repo("PyGithub/PyGithub").full_name, "PyGithub/PyGithub") | ||
| # use the token | ||
| self.assertEqual(g.get_user("ammarmallik").name, "Ammar Akbar") | ||
| self.assertEqual(g.get_repo("PyGithub/PyGithub").full_name, "PyGithub/PyGithub") | ||
@@ -215,0 +216,0 @@ def testAppInstallationAuthAuthenticationRequesterArgs(self): |
@@ -16,2 +16,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 iarspider <iarspider@gmail.com> # | ||
@@ -18,0 +19,0 @@ # # |
+1
-0
@@ -18,2 +18,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 iarspider <iarspider@gmail.com> # | ||
@@ -20,0 +21,0 @@ # # |
+5
-0
@@ -25,2 +25,4 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Joseph Henrich <crimsonknave@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Min RK <benjaminrk@gmail.com> # | ||
| # # | ||
@@ -632,1 +634,4 @@ # This file is part of PyGithub. # | ||
| ) | ||
| def testRequester(self): | ||
| assert self.g.requester is self.g.__requester |
@@ -15,2 +15,4 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 chantra <chantra@users.noreply.github.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Min RK <benjaminrk@gmail.com> # | ||
| # # | ||
@@ -284,1 +286,4 @@ # This file is part of PyGithub. # | ||
| self.assertEqual(app.url, "/apps/pygithubtest") | ||
| assert github_integration.requester is github_integration.__requester | ||
| assert app.requester is app._requester |
@@ -7,2 +7,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Nicolas Schweitzer <nicolas.schweitzer@datadoghq.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
@@ -30,2 +31,5 @@ # This file is part of PyGithub. # | ||
| import github.Repository | ||
| import github.RepositoryDiscussion | ||
| from . import Framework | ||
@@ -37,2 +41,18 @@ | ||
| class GithubObject(unittest.TestCase): | ||
| def testAttributesAsRest(self): | ||
| _ = gho.as_rest_api_attributes | ||
| self.assertIsNone(_(None)) | ||
| self.assertDictEqual(_({}), {}) | ||
| self.assertDictEqual(_({"id": "NID", "databaseId": "DBID"}), {"node_id": "NID", "id": "DBID"}) | ||
| self.assertDictEqual(_({"someId": "someId"}), {"some_id": "someId"}) | ||
| self.assertDictEqual(_({"someObj": {"someId": "someId"}}), {"some_obj": {"some_id": "someId"}}) | ||
| self.assertDictEqual(_({"bodyHTML": "<html/>"}), {"body_html": "<html/>"}) | ||
| def testApiType(self): | ||
| self.assertEqual(github.Repository.Repository.is_rest(), True) | ||
| self.assertEqual(github.Repository.Repository.is_graphql(), False) | ||
| self.assertEqual(github.RepositoryDiscussion.RepositoryDiscussion.is_rest(), False) | ||
| self.assertEqual(github.RepositoryDiscussion.RepositoryDiscussion.is_graphql(), True) | ||
| def testMakeDatetimeAttribute(self): | ||
@@ -39,0 +59,0 @@ for value, expected in [ |
+292
-11
@@ -26,2 +26,8 @@ ############################ Copyrights and license ############################ | ||
| import github | ||
| import github.GithubException | ||
| import github.Organization | ||
| import github.Repository | ||
| import github.RepositoryDiscussion | ||
| import github.RepositoryDiscussionComment | ||
| import github.Requester | ||
| from github import Github | ||
@@ -38,13 +44,9 @@ | ||
| return { | ||
| "data": { | ||
| "disablePullRequestAutoMerge": { | ||
| "actor": { | ||
| "avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", | ||
| "login": "heitorpolidoro", | ||
| "resourcePath": "/heitorpolidoro", | ||
| "url": f"{base_url}/heitorpolidoro", | ||
| }, | ||
| "clientMutationId": None, | ||
| } | ||
| } | ||
| "actor": { | ||
| "avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", | ||
| "login": "heitorpolidoro", | ||
| "resourcePath": "/heitorpolidoro", | ||
| "url": f"{base_url}/heitorpolidoro", | ||
| }, | ||
| "clientMutationId": None, | ||
| } | ||
@@ -79,1 +81,280 @@ | ||
| assert response == self.expected(base_url) | ||
| def testNode(self): | ||
| requester = self.g._Github__requester | ||
| headers, data = requester.graphql_node("D_kwDOADYVqs4ATJZD", "title", "Discussion") | ||
| self.assertTrue(headers) | ||
| self.assertEqual( | ||
| data.get("data", {}).get("node", {}).get("title"), | ||
| "Is there a way to search if a string present in default branch?", | ||
| ) | ||
| # non-existing node should throw a NOT FOUND exception | ||
| with self.assertRaises(github.UnknownObjectException) as e: | ||
| requester.graphql_node("D_abcdefgh", "title", "Discussion") | ||
| self.assertEqual(e.exception.status, 404) | ||
| self.assertEqual( | ||
| e.exception.data, | ||
| { | ||
| "data": {"node": None}, | ||
| "errors": [ | ||
| { | ||
| "type": "NOT_FOUND", | ||
| "path": ["node"], | ||
| "locations": [{"line": 3, "column": 15}], | ||
| "message": "Could not resolve to a node with the global id of 'D_abcdefgh'", | ||
| } | ||
| ], | ||
| }, | ||
| ) | ||
| self.assertEqual(e.exception.message, "Could not resolve to a node with the global id of 'D_abcdefgh'") | ||
| # wrong type should throw an exception | ||
| with self.assertRaises(github.GithubException) as e: | ||
| requester.graphql_node("D_kwDOADYVqs4ATJZD", "login", "User") | ||
| self.assertEqual(e.exception.status, 400) | ||
| self.assertEqual(e.exception.data, {"data": {"node": {"__typename": "Discussion"}}}) | ||
| self.assertEqual(e.exception.message, "Retrieved User object is of different type: Discussion") | ||
| def testNodeClass(self): | ||
| requester = self.g._Github__requester | ||
| discussion = requester.graphql_node_class( | ||
| "D_kwDOADYVqs4ATJZD", "title", github.RepositoryDiscussion.RepositoryDiscussion, "Discussion" | ||
| ) | ||
| self.assertEqual(discussion.title, "Is there a way to search if a string present in default branch?") | ||
| # non-existing node should throw a NOT FOUND exception | ||
| with self.assertRaises(github.UnknownObjectException) as e: | ||
| requester.graphql_node_class( | ||
| "D_abcdefgh", "title", github.RepositoryDiscussion.RepositoryDiscussion, "Discussion" | ||
| ) | ||
| self.assertEqual(e.exception.status, 404) | ||
| self.assertEqual( | ||
| e.exception.data, | ||
| { | ||
| "data": {"node": None}, | ||
| "errors": [ | ||
| { | ||
| "type": "NOT_FOUND", | ||
| "path": ["node"], | ||
| "locations": [{"line": 3, "column": 15}], | ||
| "message": "Could not resolve to a node with the global id of 'D_abcdefgh'", | ||
| } | ||
| ], | ||
| }, | ||
| ) | ||
| self.assertEqual(e.exception.message, "Could not resolve to a node with the global id of 'D_abcdefgh'") | ||
| # wrong type should throw an exception | ||
| with self.assertRaises(github.GithubException) as e: | ||
| requester.graphql_node_class( | ||
| "D_kwDOADYVqs4ATJZD", "login", github.RepositoryDiscussion.RepositoryDiscussion, "User" | ||
| ) | ||
| self.assertEqual(e.exception.status, 400) | ||
| self.assertEqual(e.exception.data, {"data": {"node": {"__typename": "Discussion"}}}) | ||
| self.assertEqual(e.exception.message, "Retrieved User object is of different type: Discussion") | ||
| def testQuery(self): | ||
| requester = self.g._Github__requester | ||
| query = """ | ||
| query Q($owner: String!, $name: String!) { | ||
| repository(owner: $owner, name: $name) { url } | ||
| }""" | ||
| variables = {"owner": "PyGithub", "name": "PyGithub"} | ||
| header, data = requester.graphql_query(query, variables) | ||
| self.assertTrue(header) | ||
| self.assertEqual(data, {"data": {"repository": {"url": "https://github.com/PyGithub/PyGithub"}}}) | ||
| def testQueryRestClass(self): | ||
| requester = self.g._Github__requester | ||
| query = """ | ||
| query Q($owner: String!, $name: String!) { | ||
| repository(owner: $owner, name: $name) { url } | ||
| }""" | ||
| variables = {"owner": "PyGithub", "name": "PyGithub"} | ||
| repo = requester.graphql_query_class(query, variables, ["repository"], github.Repository.Repository) | ||
| self.assertIsInstance(repo, github.Repository.Repository) | ||
| self.assertEqual(repo.html_url, "https://github.com/PyGithub/PyGithub") | ||
| def testQueryGraphQlClass(self): | ||
| requester = self.g._Github__requester | ||
| query = """ | ||
| query Q($id: ID!) { | ||
| node(id: $id) { ... on DiscussionComment { url } } | ||
| }""" | ||
| variables = {"id": "DC_kwDOADYVqs4AU3Mg"} | ||
| comment = requester.graphql_query_class( | ||
| query, variables, ["node"], github.RepositoryDiscussionComment.RepositoryDiscussionComment | ||
| ) | ||
| self.assertIsInstance(comment, github.RepositoryDiscussionComment.RepositoryDiscussionComment) | ||
| self.assertEqual( | ||
| comment.html_url, "https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5468960" | ||
| ) | ||
| def testMutation(self): | ||
| requester = self.g._Github__requester | ||
| header, data = requester.graphql_named_mutation( | ||
| "followOrganization", {"organizationId": "O_kgDOAKxBpA"}, "organization { name }" | ||
| ) | ||
| self.assertTrue(header) | ||
| self.assertEqual(data, {"organization": {"name": "PyGithub"}}) | ||
| def testMutationClass(self): | ||
| requester = self.g._Github__requester | ||
| org = requester.graphql_named_mutation_class( | ||
| "followOrganization", | ||
| {"organizationId": "O_kgDOAKxBpA"}, | ||
| "organization { name }", | ||
| "organization", | ||
| github.Organization.Organization, | ||
| ) | ||
| self.assertEqual(org.name, "PyGithub") | ||
| def testPaginationAndRestIntegration(self): | ||
| repo = self.g.get_repo("PyGithub/PyGithub") | ||
| discussion_schema = """ | ||
| id | ||
| url | ||
| number | ||
| author { | ||
| login | ||
| avatarUrl | ||
| url | ||
| } | ||
| repository { | ||
| owner { login } | ||
| name | ||
| issues(first: 10) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes { | ||
| databaseId | ||
| id | ||
| number | ||
| title | ||
| } | ||
| } | ||
| } | ||
| title | ||
| createdAt | ||
| comments(first: 10) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes { | ||
| id | ||
| url | ||
| createdAt | ||
| author { | ||
| login | ||
| avatarUrl | ||
| url | ||
| } | ||
| isAnswer | ||
| replies(first: 10) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes { | ||
| id | ||
| url | ||
| createdAt | ||
| author { | ||
| login | ||
| avatarUrl | ||
| url | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| labels(first: 10) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes { | ||
| id | ||
| name | ||
| issues(first: 10) { | ||
| totalCount | ||
| pageInfo { | ||
| startCursor | ||
| endCursor | ||
| hasNextPage | ||
| hasPreviousPage | ||
| } | ||
| nodes { | ||
| databaseId | ||
| id | ||
| number | ||
| title | ||
| } | ||
| } | ||
| } | ||
| } | ||
| """ | ||
| discussions_pages = repo.get_discussions(discussion_schema) | ||
| discussions = list(discussions_pages) | ||
| # would perform an extra request if called before iterating discussions_pages | ||
| self.assertEqual(discussions_pages.totalCount, 65) | ||
| self.assertEqual(len(discussions), 65) | ||
| self.assertEqual(discussions[0].number, 3044) | ||
| self.assertEqual(discussions[-1].number, 1780) | ||
| discussion = discussions[28] | ||
| self.assertEqual(discussion.author.login, "arunanandhan") | ||
| self.assertEqual(discussion.node_id, "D_kwDOADYVqs4ATJZD") | ||
| self.assertEqual( | ||
| discussion.author.avatar_url, | ||
| "https://avatars.githubusercontent.com/u/48812131?u=571c345a5994a55100a16b45a9688f5d6d340730&v=4", | ||
| ) | ||
| self.assertEqual(discussion.author.html_url, "https://github.com/arunanandhan") | ||
| # inner page of GraphQL comments | ||
| comments = discussion.get_comments("id") | ||
| self.assertEqual(comments.totalCount, 1) # does not perform an extra request | ||
| comments = list(comments) | ||
| self.assertEqual(len(comments), 1) | ||
| comment = comments[0] | ||
| self.assertEqual(comment.node_id, "DC_kwDOADYVqs4AU3Mg") | ||
| self.assertEqual( | ||
| comment.html_url, "https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5468960" | ||
| ) | ||
| self.assertEqual(comment.author.login, "EnricoMi") | ||
| # inner inner page of GraphQL replies | ||
| replies = comment.get_replies() | ||
| self.assertEqual(replies.totalCount, 5) # does not perform an extra request | ||
| self.assertEqual(replies[0].node_id, "DC_kwDOADYVqs4AU3Wg") | ||
| # inner page of REST labels | ||
| labels_pages = discussions[3].get_labels() | ||
| self.assertEqual(labels_pages.totalCount, 1) | ||
| label = labels_pages[0] | ||
| self.assertEqual(label.name, "Call for Contribution") | ||
| # inner REST repository | ||
| repo = discussion.repository | ||
| issues_pages = repo.get_issues() | ||
| issue = issues_pages[0] | ||
| # GraphQL retrieved 10 issues, but repo.get_issues() is not aware of that data | ||
| # it calls the REST API | ||
| self.assertEqual(issues_pages.totalCount, 341) | ||
| self.assertEqual(issue.number, 3045) |
@@ -17,2 +17,4 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Min RK <benjaminrk@gmail.com> # | ||
| # # | ||
@@ -99,1 +101,6 @@ # This file is part of PyGithub. # | ||
| self.assertEqual(repo.full_name, "PyGithub/PyGithub") | ||
| def testRequester(self): | ||
| self.assertEqual(len(self.installations), 1) | ||
| installation = self.installations[0] | ||
| assert installation.requester is installation._requester |
@@ -20,2 +20,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Arash Kadkhodaei <arash77.kad@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
@@ -22,0 +23,0 @@ # This file is part of PyGithub. # |
@@ -18,2 +18,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Jonathan Kliem <jonathan.kliem@gmail.com> # | ||
@@ -20,0 +21,0 @@ # # |
@@ -15,2 +15,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Matthias Bilger <matthias@bilger.info> # | ||
@@ -17,0 +18,0 @@ # # |
@@ -21,2 +21,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 YugoHino <henom06@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
@@ -41,2 +42,4 @@ # This file is part of PyGithub. # | ||
| from datetime import datetime, timezone | ||
| from github.PaginatedList import PaginatedList as PaginatedListImpl | ||
@@ -54,2 +57,6 @@ | ||
| def testIsApiType(self): | ||
| self.assertTrue(self.list.is_rest) | ||
| self.assertFalse(self.list.is_graphql) | ||
| def testIteration(self): | ||
@@ -332,2 +339,36 @@ self.assertEqual(len(list(self.list)), 333) | ||
| def testCustomPerPageIteration(self): | ||
| self.g.per_page = 3 | ||
| repo = self.g.get_repo("PyGithub/PyGithub") | ||
| comments = repo.get_issue(1136).get_comments() | ||
| self.assertEqual( | ||
| [ | ||
| datetime(2019, 8, 10, 18, 16, 46, tzinfo=timezone.utc), | ||
| datetime(2024, 1, 6, 16, 4, 34, tzinfo=timezone.utc), | ||
| datetime(2024, 1, 6, 17, 34, 11, tzinfo=timezone.utc), | ||
| datetime(2024, 3, 20, 15, 24, 15, tzinfo=timezone.utc), | ||
| datetime(2024, 3, 21, 10, 55, 14, tzinfo=timezone.utc), | ||
| datetime(2024, 3, 21, 14, 2, 22, tzinfo=timezone.utc), | ||
| datetime(2024, 3, 24, 13, 58, 57, tzinfo=timezone.utc), | ||
| ], | ||
| [comment.created_at for comment in comments], | ||
| ) | ||
| def testCustomPerPageReversedIteration(self): | ||
| self.g.per_page = 3 | ||
| repo = self.g.get_repo("PyGithub/PyGithub") | ||
| comments = repo.get_issue(1136).get_comments().reversed | ||
| self.assertEqual( | ||
| [ | ||
| datetime(2024, 3, 24, 13, 58, 57, tzinfo=timezone.utc), | ||
| datetime(2024, 3, 21, 14, 2, 22, tzinfo=timezone.utc), | ||
| datetime(2024, 3, 21, 10, 55, 14, tzinfo=timezone.utc), | ||
| datetime(2024, 3, 20, 15, 24, 15, tzinfo=timezone.utc), | ||
| datetime(2024, 1, 6, 17, 34, 11, tzinfo=timezone.utc), | ||
| datetime(2024, 1, 6, 16, 4, 34, tzinfo=timezone.utc), | ||
| datetime(2019, 8, 10, 18, 16, 46, tzinfo=timezone.utc), | ||
| ], | ||
| [comment.created_at for comment in comments], | ||
| ) | ||
| def testNoFirstPage(self): | ||
@@ -350,1 +391,22 @@ self.assertFalse(next(iter(self.list), None)) | ||
| self.assertDictEqual(transformer(input_dict), {"a": 1, "b": 2, "c": 4, "d": 5, "e": 6}) | ||
| def testGraphQlPagination(self): | ||
| repo = self.g.get_repo("PyGithub/PyGithub") | ||
| discussions = repo.get_discussions("id number") | ||
| self.assertFalse(discussions.is_rest) | ||
| self.assertTrue(discussions.is_graphql) | ||
| rev = discussions.reversed | ||
| discussions_list = list(discussions) | ||
| self.assertEqual(discussions.totalCount, 65) | ||
| self.assertEqual(len(discussions_list), 65) | ||
| self.assertEqual(discussions_list[0].number, 3044) | ||
| self.assertEqual(discussions_list[-1].number, 1780) | ||
| reversed_list = list(rev) | ||
| self.assertEqual(rev.totalCount, 65) | ||
| self.assertEqual(len(reversed_list), 65) | ||
| self.assertListEqual([d.number for d in reversed_list], [d.number for d in reversed(discussions_list)]) | ||
| # accessing totalCount before iterating the PaginatedList triggers another request | ||
| self.assertEqual(repo.get_discussions("id number").totalCount, 65) |
+15
-22
@@ -30,2 +30,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Den Stroebel <stroebs@users.noreply.github.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
@@ -526,13 +527,9 @@ # This file is part of PyGithub. # | ||
| assert response == { | ||
| "data": { | ||
| "enablePullRequestAutoMerge": { | ||
| "actor": { | ||
| "avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", | ||
| "login": "heitorpolidoro", | ||
| "resourcePath": "/heitorpolidoro", | ||
| "url": "https://github.com/heitorpolidoro", | ||
| }, | ||
| "clientMutationId": None, | ||
| } | ||
| } | ||
| "actor": { | ||
| "avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", | ||
| "login": "heitorpolidoro", | ||
| "resourcePath": "/heitorpolidoro", | ||
| "url": "https://github.com/heitorpolidoro", | ||
| }, | ||
| "clientMutationId": None, | ||
| } | ||
@@ -571,13 +568,9 @@ | ||
| assert response == { | ||
| "data": { | ||
| "disablePullRequestAutoMerge": { | ||
| "actor": { | ||
| "avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", | ||
| "login": "heitorpolidoro", | ||
| "resourcePath": "/heitorpolidoro", | ||
| "url": "https://github.com/heitorpolidoro", | ||
| }, | ||
| "clientMutationId": None, | ||
| } | ||
| } | ||
| "actor": { | ||
| "avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", | ||
| "login": "heitorpolidoro", | ||
| "resourcePath": "/heitorpolidoro", | ||
| "url": "https://github.com/heitorpolidoro", | ||
| }, | ||
| "clientMutationId": None, | ||
| } |
@@ -29,5 +29,5 @@ https | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation DisablePullRequestAutoMerge($input: DisablePullRequestAutoMergeInput!) { disablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ=="}}} | ||
| {"query": "mutation Mutation($input: DisablePullRequestAutoMergeInput!) { disablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ=="}}} | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Wed, 07 Jun 2023 08:27:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"1573389419d98a2b3d9a6b1fc058a68f1fc3d31108ccfdab8ca4121153626211"'), ('Last-Modified', 'Wed, 07 Jun 2023 04:02:03 GMT'), ('X-OAuth-Scopes', 'public_repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1686126614'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8A96:10854:895AE2:8AB25B:64803F81')] | ||
| {"data": {"disablePullRequestAutoMerge": {"actor": {"avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", "login": "heitorpolidoro", "resourcePath": "/heitorpolidoro", "url": "https://github.com/heitorpolidoro"}, "clientMutationId": null}}} |
@@ -29,5 +29,5 @@ https | ||
| {'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation DisablePullRequestAutoMerge($input: DisablePullRequestAutoMergeInput!) { disablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ=="}}} | ||
| {"query": "mutation Mutation($input: DisablePullRequestAutoMergeInput!) { disablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ=="}}} | ||
| 200 | ||
| [('Server', 'enterprise.com'), ('Date', 'Wed, 07 Jun 2023 08:27:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"1573389419d98a2b3d9a6b1fc058a68f1fc3d31108ccfdab8ca4121153626211"'), ('Last-Modified', 'Wed, 07 Jun 2023 04:02:03 GMT'), ('X-OAuth-Scopes', 'public_repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1686126614'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8A96:10854:895AE2:8AB25B:64803F81')] | ||
| {"data": {"disablePullRequestAutoMerge": {"actor": {"avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", "login": "heitorpolidoro", "resourcePath": "/heitorpolidoro", "url": "https://my.enterprise.com:8080/api/v3/heitorpolidoro"}, "clientMutationId": null}}} |
@@ -29,5 +29,5 @@ https | ||
| {'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation DisablePullRequestAutoMerge($input: DisablePullRequestAutoMergeInput!) { disablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ=="}}} | ||
| {"query": "mutation Mutation($input: DisablePullRequestAutoMergeInput!) { disablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ=="}}} | ||
| 200 | ||
| [('Server', 'enterprise.com'), ('Date', 'Wed, 07 Jun 2023 08:27:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"1573389419d98a2b3d9a6b1fc058a68f1fc3d31108ccfdab8ca4121153626211"'), ('Last-Modified', 'Wed, 07 Jun 2023 04:02:03 GMT'), ('X-OAuth-Scopes', 'public_repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1686126614'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8A96:10854:895AE2:8AB25B:64803F81')] | ||
| {"data": {"disablePullRequestAutoMerge": {"actor": {"avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", "login": "heitorpolidoro", "resourcePath": "/heitorpolidoro", "url": "https://my.enterprise.com/api/v3/heitorpolidoro"}, "clientMutationId": null}}} |
@@ -7,5 +7,5 @@ https | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation MinimizeComment($input: MinimizeCommentInput!) { minimizeComment(input: $input) { minimizedComment { isMinimized } } }", "variables": {"input": {"subjectId": "IC_kwDOGpsAJ86Gecc_", "classifier": "OUTDATED"}}} | ||
| {"query": "mutation Mutation($input: MinimizeCommentInput!) { minimizeComment(input: $input) { minimizedComment { isMinimized } } }", "variables": {"input": {"subjectId": "IC_kwDOGpsAJ86Gecc_", "classifier": "OUTDATED"}}} | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Mon, 29 Jul 2024 14:43:44 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('github-authentication-token-expiration', '2024-08-28 16:30:05 +0200'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4991'), ('X-RateLimit-Reset', '1722267171'), ('X-RateLimit-Used', '9'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'C08C:1A4F2F:3A882EB:3B486EE:66A7AAA0')] | ||
| {"data":{"minimizeComment":{"minimizedComment":{"isMinimized":true}}}} |
@@ -7,5 +7,5 @@ https | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} | ||
| {"query": "mutation UnminimizeComment($input: UnminimizeCommentInput!) { unminimizeComment(input: $input) { unminimizedComment { isMinimized } } }", "variables": {"input": {"subjectId": "IC_kwDOGpsAJ86Gecc_"}}} | ||
| {"query": "mutation Mutation($input: UnminimizeCommentInput!) { unminimizeComment(input: $input) { unminimizedComment { isMinimized } } }", "variables": {"input": {"subjectId": "IC_kwDOGpsAJ86Gecc_"}}} | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Mon, 29 Jul 2024 14:43:55 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('github-authentication-token-expiration', '2024-08-28 16:30:05 +0200'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4990'), ('X-RateLimit-Reset', '1722267171'), ('X-RateLimit-Used', '10'), ('X-RateLimit-Resource', 'graphql'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'C064:1A4F2F:3A8AFE1:3B4B457:66A7AAAB')] | ||
| {"data":{"unminimizeComment":{"unminimizedComment":{"isMinimized":false}}}} |
@@ -16,3 +16,3 @@ https | ||
| None | ||
| /repos/austinsasko/PyGithub/pulls?head=revert-20-revert-19-revert-18-revert-16-revert-15-revert-14-revert-13-revert-12-revert-11-revert-10-revert-9-revert-8-revert-7-revert-6-revert-5-revert-4-revert-3-revert-2-revert-1-testing&per_page=1 | ||
| /repos/austinsasko/PyGithub/pulls?head=austinsasko%3Arevert-20-revert-19-revert-18-revert-16-revert-15-revert-14-revert-13-revert-12-revert-11-revert-10-revert-9-revert-8-revert-7-revert-6-revert-5-revert-4-revert-3-revert-2-revert-1-testing&per_page=1 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
@@ -19,0 +19,0 @@ None |
@@ -38,3 +38,3 @@ https | ||
| None | ||
| /repos/austinsasko/PyGithub/pulls?head=revert-20-revert-19-revert-18-revert-16-revert-15-revert-14-revert-13-revert-12-revert-11-revert-10-revert-9-revert-8-revert-7-revert-6-revert-5-revert-4-revert-3-revert-2-revert-1-testing&per_page=1 | ||
| /repos/austinsasko/PyGithub/pulls?head=austinsasko%3Arevert-20-revert-19-revert-18-revert-16-revert-15-revert-14-revert-13-revert-12-revert-11-revert-10-revert-9-revert-8-revert-7-revert-6-revert-5-revert-4-revert-3-revert-2-revert-1-testing&per_page=1 | ||
| {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} | ||
@@ -41,0 +41,0 @@ None |
@@ -7,5 +7,5 @@ https | ||
| {'Authorization': 'Basic login_and_password_removed', 'Content-Type': 'application/json', 'User-Agent': 'PyGithub/Python'} | ||
| {"query": "mutation DisablePullRequestAutoMerge($input: DisablePullRequestAutoMergeInput!) { disablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ=="}}} | ||
| {"query": "mutation Mutation($input: DisablePullRequestAutoMergeInput!) { disablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ=="}}} | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Wed, 07 Jun 2023 08:27:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"1573389419d98a2b3d9a6b1fc058a68f1fc3d31108ccfdab8ca4121153626211"'), ('Last-Modified', 'Wed, 07 Jun 2023 04:02:03 GMT'), ('X-OAuth-Scopes', 'public_repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1686126614'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8A96:10854:895AE2:8AB25B:64803F81')] | ||
| {"data": {"disablePullRequestAutoMerge": {"actor": {"avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", "login": "heitorpolidoro", "resourcePath": "/heitorpolidoro", "url": "https://github.com/heitorpolidoro"}, "clientMutationId": null}}} |
@@ -7,5 +7,5 @@ https | ||
| {'Authorization': 'Basic login_and_password_removed', 'Content-Type': 'application/json', 'User-Agent': 'PyGithub/Python'} | ||
| {"query": "mutation EnablePullRequestAutoMerge($input: EnablePullRequestAutoMergeInput!) { enablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ==", "mergeMethod": "SQUASH", "authorEmail": "foo@example.com", "clientMutationId": "1234", "commitBody": "body of the commit", "commitHeadline": "The commit headline", "expectedHeadOid": "0283d46537193f1fed7d46859f15c5304b9836f9"}}} | ||
| {"query": "mutation Mutation($input: EnablePullRequestAutoMergeInput!) { enablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ==", "mergeMethod": "SQUASH", "authorEmail": "foo@example.com", "clientMutationId": "1234", "commitBody": "body of the commit", "commitHeadline": "The commit headline", "expectedHeadOid": "0283d46537193f1fed7d46859f15c5304b9836f9"}}} | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Wed, 07 Jun 2023 08:27:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"1573389419d98a2b3d9a6b1fc058a68f1fc3d31108ccfdab8ca4121153626211"'), ('Last-Modified', 'Wed, 07 Jun 2023 04:02:03 GMT'), ('X-OAuth-Scopes', 'public_repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1686126614'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8A96:10854:895AE2:8AB25B:64803F81')] | ||
| {"data": {"enablePullRequestAutoMerge": {"actor": {"avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", "login": "heitorpolidoro", "resourcePath": "/heitorpolidoro", "url": "https://github.com/heitorpolidoro"}, "clientMutationId": null}}} |
@@ -7,5 +7,5 @@ https | ||
| {'Authorization': 'Basic login_and_password_removed', 'Content-Type': 'application/json', 'User-Agent': 'PyGithub/Python'} | ||
| {"query": "mutation EnablePullRequestAutoMerge($input: EnablePullRequestAutoMergeInput!) { enablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ==", "mergeMethod": "MERGE"}}} | ||
| {"query": "mutation Mutation($input: EnablePullRequestAutoMergeInput!) { enablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ==", "mergeMethod": "MERGE"}}} | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Wed, 07 Jun 2023 08:27:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"1573389419d98a2b3d9a6b1fc058a68f1fc3d31108ccfdab8ca4121153626211"'), ('Last-Modified', 'Wed, 07 Jun 2023 04:02:03 GMT'), ('X-OAuth-Scopes', 'public_repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1686126614'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8A96:10854:895AE2:8AB25B:64803F81')] | ||
| {"data": {"enablePullRequestAutoMerge": {"actor": {"avatarUrl": "https://avatars.githubusercontent.com/u/14806300?u=786f9f8ef8782d45381b01580f7f7783cf9c7e37&v=4", "login": "heitorpolidoro", "resourcePath": "/heitorpolidoro", "url": "https://github.com/heitorpolidoro"}, "clientMutationId": null}}} |
@@ -7,5 +7,5 @@ https | ||
| {'Authorization': 'Basic login_and_password_removed', 'Content-Type': 'application/json', 'User-Agent': 'PyGithub/Python'} | ||
| {"query": "mutation EnablePullRequestAutoMerge($input: EnablePullRequestAutoMergeInput!) { enablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ==", "mergeMethod": "MERGE"}}} | ||
| {"query": "mutation Mutation($input: EnablePullRequestAutoMergeInput!) { enablePullRequestAutoMerge(input: $input) { actor { avatarUrl login resourcePath url } clientMutationId } }", "variables": {"input": {"pullRequestId": "MDExOlB1bGxSZXF1ZXN0MTQzNjIxNQ==", "mergeMethod": "MERGE"}}} | ||
| 200 | ||
| [('Server', 'GitHub.com'), ('Date', 'Wed, 07 Jun 2023 08:27:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"1573389419d98a2b3d9a6b1fc058a68f1fc3d31108ccfdab8ca4121153626211"'), ('Last-Modified', 'Wed, 07 Jun 2023 04:02:03 GMT'), ('X-OAuth-Scopes', 'public_repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1686126614'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8A96:10854:895AE2:8AB25B:64803F81')] | ||
| {"data": {"enablePullRequestAutoMerge": null}, "errors": [{"locations": [{"column": 81, "line": 1}], "message": "Pull request Auto merge is not allowed for this repository", "path": ["enablePullRequestAutoMerge"], "type": "UNPROCESSABLE"}]} |
@@ -19,2 +19,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Jirka Borovec <6035284+Borda@users.noreply.github.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Ramiro Morales <ramiro@users.noreply.github.com> # | ||
@@ -21,0 +22,0 @@ # # |
+36
-0
@@ -7,2 +7,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2023 Trim21 <trim21.me@gmail.com> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
@@ -32,2 +33,3 @@ # This file is part of PyGithub. # | ||
| import github | ||
| from github import Requester as gr | ||
@@ -142,2 +144,36 @@ from . import Framework | ||
| def testGetParametersOfUrl(self): | ||
| self.assertEqual({}, gr.Requester.get_parameters_of_url("https://github.com/api")) | ||
| self.assertEqual({"per_page": ["10"]}, gr.Requester.get_parameters_of_url("https://github.com/api?per_page=10")) | ||
| self.assertEqual( | ||
| {"per_page": ["10"], "page": ["2"]}, | ||
| gr.Requester.get_parameters_of_url("https://github.com/api?per_page=10&page=2"), | ||
| ) | ||
| self.assertEqual( | ||
| {"item": ["1", "2", "3"]}, gr.Requester.get_parameters_of_url("https://github.com/api?item=1&item=2&item=3") | ||
| ) | ||
| def testAddParametersToUrl(self): | ||
| self.assertEqual("https://github.com/api", gr.Requester.add_parameters_to_url("https://github.com/api", {})) | ||
| self.assertEqual( | ||
| "https://github.com/api?per_page=10", | ||
| gr.Requester.add_parameters_to_url("https://github.com/api", {"per_page": 10}), | ||
| ) | ||
| self.assertEqual( | ||
| "https://github.com/api?per_page=10&page=2", | ||
| gr.Requester.add_parameters_to_url("https://github.com/api", {"per_page": 10, "page": 2}), | ||
| ) | ||
| self.assertEqual( | ||
| "https://github.com/api?per_page=10&page=2", | ||
| gr.Requester.add_parameters_to_url("https://github.com/api?per_page=10", {"page": 2}), | ||
| ) | ||
| self.assertEqual( | ||
| "https://github.com/api?per_page=10&page=2", | ||
| gr.Requester.add_parameters_to_url("https://github.com/api?per_page=10&page=1", {"page": 2}), | ||
| ) | ||
| self.assertEqual( | ||
| "https://github.com/api?item=3&item=4", | ||
| gr.Requester.add_parameters_to_url("https://github.com/api?item=1&item=2&item=3", {"item": [3, 4]}), | ||
| ) | ||
| def testCloseGithub(self): | ||
@@ -144,0 +180,0 @@ mocked_connection = mock.MagicMock() |
@@ -18,2 +18,3 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Caleb McCombs <caleb@mccombalot.net> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # # | ||
@@ -20,0 +21,0 @@ # This file is part of PyGithub. # |
@@ -11,2 +11,4 @@ ############################ Copyrights and license ############################ | ||
| # Copyright 2024 Chris Gavin <chris@chrisgavin.me> # | ||
| # Copyright 2024 Enrico Minack <github@enrico.minack.dev> # | ||
| # Copyright 2024 Geoffrey <geoffrey@moveparallel.com> # | ||
| # # | ||
@@ -47,2 +49,3 @@ # This file is part of PyGithub. # | ||
| ) | ||
| self.assertEqual(self.workflow_run.actor.login, "nuang-ee") | ||
| self.assertEqual(self.workflow_run.id, 3881497935) | ||
@@ -49,0 +52,0 @@ self.assertEqual(self.workflow_run.name, "CI") |
| # Configuration for probot-stale - https://github.com/probot/stale | ||
| # Number of days of inactivity before an Issue or Pull Request becomes stale | ||
| daysUntilStale: 180 | ||
| # Number of days of inactivity before a stale Issue or Pull Request is closed. | ||
| # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. | ||
| daysUntilClose: 7 | ||
| # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable | ||
| exemptLabels: | ||
| - feature request | ||
| - high priority | ||
| # Set to true to ignore issues in a project (defaults to false) | ||
| exemptProjects: false | ||
| # Set to true to ignore issues in a milestone (defaults to false) | ||
| exemptMilestones: false | ||
| # Label to use when marking as stale | ||
| staleLabel: stale | ||
| # Comment to post when marking as stale. Set to `false` to disable | ||
| markComment: > | ||
| This issue has been automatically marked as stale because it has not had | ||
| recent activity. It will be closed if no further activity occurs. Thank you | ||
| for your contributions. | ||
| # Comment to post when removing the stale label. | ||
| # unmarkComment: > | ||
| # Your comment here. | ||
| # Comment to post when closing a stale Issue or Pull Request. | ||
| # closeComment: > | ||
| # Your comment here. | ||
| # Limit the number of actions per hour, from 1-30. Default is 30 | ||
| limitPerRun: 30 | ||
| # Limit to only `issues` or `pulls` | ||
| # only: issues | ||
| # Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': | ||
| # pulls: | ||
| # daysUntilStale: 30 | ||
| # markComment: > | ||
| # This pull request has been automatically marked as stale because it has not had | ||
| # recent activity. It will be closed if no further activity occurs. Thank you | ||
| # for your contributions. | ||
| # issues: | ||
| # exemptLabels: | ||
| # - confirmed |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
30309208
2.14%1256
2.28%49648
3.51%