We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
401 unauthorized after upgrading to 1.58.0
We use `GithubIntegration.get_access_token` to authenticate and after upgrading we now get this response:

```
github.GithubException.GithubException: 401 {"message": "'Expiration time' claim ('exp') must be a numeric value representing the future time at which the assertion expires", "documentation_url": "https://docs.github.com/rest"}
```

Reverting to 1.57 solves the issue.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `github/GithubIntegration.py`
Content:
```
1 import time
2 
3 import deprecated
4 import jwt
5 
6 from github import Consts
7 from github.GithubException import GithubException
8 from github.Installation import Installation
9 from github.InstallationAuthorization import InstallationAuthorization
10 from github.PaginatedList import PaginatedList
11 from github.Requester import Requester
12 
13 
14 class GithubIntegration:
15     """
16     Main class to obtain tokens for a GitHub integration.
17     """
18 
19     def __init__(
20         self,
21         integration_id,
22         private_key,
23         base_url=Consts.DEFAULT_BASE_URL,
24         jwt_expiry=Consts.DEFAULT_JWT_EXPIRY,
25         jwt_issued_at=Consts.DEFAULT_JWT_ISSUED_AT,
26     ):
27         """
28         :param integration_id: int
29         :param private_key: string
30         :param base_url: string
31         :param jwt_expiry: int. Expiry of the JWT used to get the information about this integration.
32           The default expiration is in 5 minutes and is capped at 10 minutes according to GitHub documentation
33           https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#generating-a-json-web-token-jwt
34         :param jwt_issued_at: int. Number of seconds, relative to now, to set for the "iat" (issued at) parameter.
35           The default value is -60 to protect against clock drift
36         """
37         assert isinstance(integration_id, (int, str)), integration_id
38         assert isinstance(private_key, str), "supplied private key should be a string"
39         assert isinstance(base_url, str), base_url
40         assert isinstance(jwt_expiry, int), jwt_expiry
41         assert Consts.MIN_JWT_EXPIRY <= jwt_expiry <= Consts.MAX_JWT_EXPIRY, jwt_expiry
42         assert isinstance(jwt_issued_at, int)
43 
44         self.base_url = base_url
45         self.integration_id = integration_id
46         self.private_key = private_key
47         self.jwt_expiry = jwt_expiry
48         self.jwt_issued_at = jwt_issued_at
49         self.__requester = Requester(
50             login_or_token=None,
51             password=None,
52             jwt=self.create_jwt(),
53             app_auth=None,
54             base_url=self.base_url,
55             timeout=Consts.DEFAULT_TIMEOUT,
56             user_agent="PyGithub/Python",
57             per_page=Consts.DEFAULT_PER_PAGE,
58             verify=True,
59             retry=None,
60             pool_size=None,
61         )
62 
63     def _get_headers(self):
64         """
65         Get headers for the requests.
66 
67         :return: dict
68         """
69         return {
70             "Authorization": f"Bearer {self.create_jwt()}",
71             "Accept": Consts.mediaTypeIntegrationPreview,
72             "User-Agent": "PyGithub/Python",
73         }
74 
75     def _get_installed_app(self, url):
76         """
77         Get installation for the given URL.
78 
79         :param url: str
80         :rtype: :class:`github.Installation.Installation`
81         """
82         headers, response = self.__requester.requestJsonAndCheck(
83             "GET", url, headers=self._get_headers()
84         )
85 
86         return Installation(
87             requester=self.__requester,
88             headers=headers,
89             attributes=response,
90             completed=True,
91         )
92 
93     def create_jwt(self, expiration=None):
94         """
95         Create a signed JWT
96         https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#authenticating-as-a-github-app
97 
98         :return string:
99         """
100         if expiration is not None:
101             assert isinstance(expiration, int), expiration
102             assert (
103                 Consts.MIN_JWT_EXPIRY <= expiration <= Consts.MAX_JWT_EXPIRY
104             ), expiration
105 
106         now = int(time.time())
107         payload = {
108             "iat": now + self.jwt_issued_at,
109             "exp": now + (expiration if expiration is not None else self.jwt_expiry),
110             "iss": self.integration_id,
111         }
112         encrypted = jwt.encode(payload, key=self.private_key, algorithm="RS256")
113 
114         if isinstance(encrypted, bytes):
115             encrypted = encrypted.decode("utf-8")
116 
117         return encrypted
118 
119     def get_access_token(self, installation_id, permissions=None):
120         """
121         :calls: `POST /app/installations/{installation_id}/access_tokens <https://docs.github.com/en/rest/apps/apps#create-an-installation-access-token-for-an-app>`
122         :param installation_id: int
123         :param permissions: dict
124         :return: :class:`github.InstallationAuthorization.InstallationAuthorization`
125         """
126         if permissions is None:
127             permissions = {}
128 
129         if not isinstance(permissions, dict):
130             raise GithubException(
131                 status=400, data={"message": "Invalid permissions"}, headers=None
132             )
133 
134         body = {"permissions": permissions}
135         headers, response = self.__requester.requestJsonAndCheck(
136             "POST",
137             f"/app/installations/{installation_id}/access_tokens",
138             input=body,
139         )
140 
141         return InstallationAuthorization(
142             requester=self.__requester,
143             headers=headers,
144             attributes=response,
145             completed=True,
146         )
147 
148     @deprecated.deprecated("Use get_repo_installation")
149     def get_installation(self, owner, repo):
150         """
151         Deprecated by get_repo_installation
152 
153         :calls: `GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app>`
154         :param owner: str
155         :param repo: str
156         :rtype: :class:`github.Installation.Installation`
157         """
158         return self._get_installed_app(url=f"/repos/{owner}/{repo}/installation")
159 
160     def get_installations(self):
161         """
162         :calls: GET /app/installations <https://docs.github.com/en/rest/reference/apps#list-installations-for-the-authenticated-app>
163         :rtype: :class:`github.PaginatedList.PaginatedList[github.Installation.Installation]`
164         """
165         return PaginatedList(
166             contentClass=Installation,
167             requester=self.__requester,
168             firstUrl="/app/installations",
169             firstParams=None,
170             headers=self._get_headers(),
171             list_item="installations",
172         )
173 
174     def get_org_installation(self, org):
175         """
176         :calls: `GET /orgs/{org}/installation <https://docs.github.com/en/rest/apps/apps#get-an-organization-installation-for-the-authenticated-app>`
177         :param org: str
178         :rtype: :class:`github.Installation.Installation`
179         """
180         return self._get_installed_app(url=f"/orgs/{org}/installation")
181 
182     def get_repo_installation(self, owner, repo):
183         """
184         :calls: `GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app>`
185         :param owner: str
186         :param repo: str
187         :rtype: :class:`github.Installation.Installation`
188         """
189         return self._get_installed_app(url=f"/repos/{owner}/{repo}/installation")
190 
191     def get_user_installation(self, username):
192         """
193         :calls: `GET /users/{username}/installation <https://docs.github.com/en/rest/apps/apps#get-a-user-installation-for-the-authenticated-app>`
194         :param username: str
195         :rtype: :class:`github.Installation.Installation`
196         """
197         return self._get_installed_app(url=f"/users/{username}/installation")
198 
199     def get_app_installation(self, installation_id):
200         """
201         :calls: `GET /app/installations/{installation_id} <https://docs.github.com/en/rest/apps/apps#get-an-installation-for-the-authenticated-app>`
202         :param installation_id: int
203         :rtype: :class:`github.Installation.Installation`
204         """
205         return self._get_installed_app(url=f"/app/installations/{installation_id}")
206
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/github/GithubIntegration.py b/github/GithubIntegration.py
--- a/github/GithubIntegration.py
+++ b/github/GithubIntegration.py
@@ -135,6 +135,7 @@
         headers, response = self.__requester.requestJsonAndCheck(
             "POST",
             f"/app/installations/{installation_id}/access_tokens",
+            headers=self._get_headers(),
             input=body,
         )

{"golden_diff": "diff --git a/github/GithubIntegration.py b/github/GithubIntegration.py\n--- a/github/GithubIntegration.py\n+++ b/github/GithubIntegration.py\n@@ -135,6 +135,7 @@\n         headers, response = self.__requester.requestJsonAndCheck(\n             \"POST\",\n             f\"/app/installations/{installation_id}/access_tokens\",\n+            headers=self._get_headers(),\n             input=body,\n         )\n", "issue": "401 unauthorized after upgrading to 1.58.0\nWe use `GithubIntegration.get_access_token` to authenticate and after upgrading we now get this response:\r\n\r\n```\r\ngithub.GithubException.GithubException: 401 {\"message\": \"'Expiration time' claim ('exp') must be a numeric value representing the future time at which the assertion expires\", \"documentation_url\": \"https://docs.github.com/rest\"}\r\n```\r\n\r\nReverting to 1.57 solves the issue.\n", "before_files": [{"content": "import time\n\nimport deprecated\nimport jwt\n\nfrom github import Consts\nfrom github.GithubException import GithubException\nfrom github.Installation import Installation\nfrom github.InstallationAuthorization import InstallationAuthorization\nfrom github.PaginatedList import PaginatedList\nfrom github.Requester import Requester\n\n\nclass GithubIntegration:\n    \"\"\"\n    Main class to obtain tokens for a GitHub integration.\n    \"\"\"\n\n    def __init__(\n        self,\n        integration_id,\n        private_key,\n        base_url=Consts.DEFAULT_BASE_URL,\n        jwt_expiry=Consts.DEFAULT_JWT_EXPIRY,\n        jwt_issued_at=Consts.DEFAULT_JWT_ISSUED_AT,\n    ):\n        \"\"\"\n        :param integration_id: int\n        :param private_key: string\n        :param base_url: string\n        :param jwt_expiry: int. Expiry of the JWT used to get the information about this integration.\n          The default expiration is in 5 minutes and is capped at 10 minutes according to GitHub documentation\n          https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#generating-a-json-web-token-jwt\n        :param jwt_issued_at: int. Number of seconds, relative to now, to set for the \"iat\" (issued at) parameter.\n          The default value is -60 to protect against clock drift\n        \"\"\"\n        assert isinstance(integration_id, (int, str)), integration_id\n        assert isinstance(private_key, str), \"supplied private key should be a string\"\n        assert isinstance(base_url, str), base_url\n        assert isinstance(jwt_expiry, int), jwt_expiry\n        assert Consts.MIN_JWT_EXPIRY <= jwt_expiry <= Consts.MAX_JWT_EXPIRY, jwt_expiry\n        assert isinstance(jwt_issued_at, int)\n\n        self.base_url = base_url\n        self.integration_id = integration_id\n        self.private_key = private_key\n        self.jwt_expiry = jwt_expiry\n        self.jwt_issued_at = jwt_issued_at\n        self.__requester = Requester(\n            login_or_token=None,\n            password=None,\n            jwt=self.create_jwt(),\n            app_auth=None,\n            base_url=self.base_url,\n            timeout=Consts.DEFAULT_TIMEOUT,\n            user_agent=\"PyGithub/Python\",\n            per_page=Consts.DEFAULT_PER_PAGE,\n            verify=True,\n            retry=None,\n            pool_size=None,\n        )\n\n    def _get_headers(self):\n        \"\"\"\n        Get headers for the requests.\n\n        :return: dict\n        \"\"\"\n        return {\n            \"Authorization\": f\"Bearer {self.create_jwt()}\",\n            \"Accept\": Consts.mediaTypeIntegrationPreview,\n            \"User-Agent\": \"PyGithub/Python\",\n        }\n\n    def _get_installed_app(self, url):\n        \"\"\"\n        Get installation for the given URL.\n\n        :param url: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        headers, response = self.__requester.requestJsonAndCheck(\n            \"GET\", url, headers=self._get_headers()\n        )\n\n        return Installation(\n            requester=self.__requester,\n            headers=headers,\n            attributes=response,\n            completed=True,\n        )\n\n    def create_jwt(self, expiration=None):\n        \"\"\"\n        Create a signed JWT\n        https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#authenticating-as-a-github-app\n\n        :return string:\n        \"\"\"\n        if expiration is not None:\n            assert isinstance(expiration, int), expiration\n            assert (\n                Consts.MIN_JWT_EXPIRY <= expiration <= Consts.MAX_JWT_EXPIRY\n            ), expiration\n\n        now = int(time.time())\n        payload = {\n            \"iat\": now + self.jwt_issued_at,\n            \"exp\": now + (expiration if expiration is not None else self.jwt_expiry),\n            \"iss\": self.integration_id,\n        }\n        encrypted = jwt.encode(payload, key=self.private_key, algorithm=\"RS256\")\n\n        if isinstance(encrypted, bytes):\n            encrypted = encrypted.decode(\"utf-8\")\n\n        return encrypted\n\n    def get_access_token(self, installation_id, permissions=None):\n        \"\"\"\n        :calls: `POST /app/installations/{installation_id}/access_tokens <https://docs.github.com/en/rest/apps/apps#create-an-installation-access-token-for-an-app>`\n        :param installation_id: int\n        :param permissions: dict\n        :return: :class:`github.InstallationAuthorization.InstallationAuthorization`\n        \"\"\"\n        if permissions is None:\n            permissions = {}\n\n        if not isinstance(permissions, dict):\n            raise GithubException(\n                status=400, data={\"message\": \"Invalid permissions\"}, headers=None\n            )\n\n        body = {\"permissions\": permissions}\n        headers, response = self.__requester.requestJsonAndCheck(\n            \"POST\",\n            f\"/app/installations/{installation_id}/access_tokens\",\n            input=body,\n        )\n\n        return InstallationAuthorization(\n            requester=self.__requester,\n            headers=headers,\n            attributes=response,\n            completed=True,\n        )\n\n    @deprecated.deprecated(\"Use get_repo_installation\")\n    def get_installation(self, owner, repo):\n        \"\"\"\n        Deprecated by get_repo_installation\n\n        :calls: `GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app>`\n        :param owner: str\n        :param repo: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/repos/{owner}/{repo}/installation\")\n\n    def get_installations(self):\n        \"\"\"\n        :calls: GET /app/installations <https://docs.github.com/en/rest/reference/apps#list-installations-for-the-authenticated-app>\n        :rtype: :class:`github.PaginatedList.PaginatedList[github.Installation.Installation]`\n        \"\"\"\n        return PaginatedList(\n            contentClass=Installation,\n            requester=self.__requester,\n            firstUrl=\"/app/installations\",\n            firstParams=None,\n            headers=self._get_headers(),\n            list_item=\"installations\",\n        )\n\n    def get_org_installation(self, org):\n        \"\"\"\n        :calls: `GET /orgs/{org}/installation <https://docs.github.com/en/rest/apps/apps#get-an-organization-installation-for-the-authenticated-app>`\n        :param org: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/orgs/{org}/installation\")\n\n    def get_repo_installation(self, owner, repo):\n        \"\"\"\n        :calls: `GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app>`\n        :param owner: str\n        :param repo: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/repos/{owner}/{repo}/installation\")\n\n    def get_user_installation(self, username):\n        \"\"\"\n        :calls: `GET /users/{username}/installation <https://docs.github.com/en/rest/apps/apps#get-a-user-installation-for-the-authenticated-app>`\n        :param username: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/users/{username}/installation\")\n\n    def get_app_installation(self, installation_id):\n        \"\"\"\n        :calls: `GET /app/installations/{installation_id} <https://docs.github.com/en/rest/apps/apps#get-an-installation-for-the-authenticated-app>`\n        :param installation_id: int\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/app/installations/{installation_id}\")\n", "path": "github/GithubIntegration.py"}], "after_files": [{"content": "import time\n\nimport deprecated\nimport jwt\n\nfrom github import Consts\nfrom github.GithubException import GithubException\nfrom github.Installation import Installation\nfrom github.InstallationAuthorization import InstallationAuthorization\nfrom github.PaginatedList import PaginatedList\nfrom github.Requester import Requester\n\n\nclass GithubIntegration:\n    \"\"\"\n    Main class to obtain tokens for a GitHub integration.\n    \"\"\"\n\n    def __init__(\n        self,\n        integration_id,\n        private_key,\n        base_url=Consts.DEFAULT_BASE_URL,\n        jwt_expiry=Consts.DEFAULT_JWT_EXPIRY,\n        jwt_issued_at=Consts.DEFAULT_JWT_ISSUED_AT,\n    ):\n        \"\"\"\n        :param integration_id: int\n        :param private_key: string\n        :param base_url: string\n        :param jwt_expiry: int. Expiry of the JWT used to get the information about this integration.\n          The default expiration is in 5 minutes and is capped at 10 minutes according to GitHub documentation\n          https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#generating-a-json-web-token-jwt\n        :param jwt_issued_at: int. Number of seconds, relative to now, to set for the \"iat\" (issued at) parameter.\n          The default value is -60 to protect against clock drift\n        \"\"\"\n        assert isinstance(integration_id, (int, str)), integration_id\n        assert isinstance(private_key, str), \"supplied private key should be a string\"\n        assert isinstance(base_url, str), base_url\n        assert isinstance(jwt_expiry, int), jwt_expiry\n        assert Consts.MIN_JWT_EXPIRY <= jwt_expiry <= Consts.MAX_JWT_EXPIRY, jwt_expiry\n        assert isinstance(jwt_issued_at, int)\n\n        self.base_url = base_url\n        self.integration_id = integration_id\n        self.private_key = private_key\n        self.jwt_expiry = jwt_expiry\n        self.jwt_issued_at = jwt_issued_at\n        self.__requester = Requester(\n            login_or_token=None,\n            password=None,\n            jwt=self.create_jwt(),\n            app_auth=None,\n            base_url=self.base_url,\n            timeout=Consts.DEFAULT_TIMEOUT,\n            user_agent=\"PyGithub/Python\",\n            per_page=Consts.DEFAULT_PER_PAGE,\n            verify=True,\n            retry=None,\n            pool_size=None,\n        )\n\n    def _get_headers(self):\n        \"\"\"\n        Get headers for the requests.\n\n        :return: dict\n        \"\"\"\n        return {\n            \"Authorization\": f\"Bearer {self.create_jwt()}\",\n            \"Accept\": Consts.mediaTypeIntegrationPreview,\n            \"User-Agent\": \"PyGithub/Python\",\n        }\n\n    def _get_installed_app(self, url):\n        \"\"\"\n        Get installation for the given URL.\n\n        :param url: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        headers, response = self.__requester.requestJsonAndCheck(\n            \"GET\", url, headers=self._get_headers()\n        )\n\n        return Installation(\n            requester=self.__requester,\n            headers=headers,\n            attributes=response,\n            completed=True,\n        )\n\n    def create_jwt(self, expiration=None):\n        \"\"\"\n        Create a signed JWT\n        https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#authenticating-as-a-github-app\n\n        :return string:\n        \"\"\"\n        if expiration is not None:\n            assert isinstance(expiration, int), expiration\n            assert (\n                Consts.MIN_JWT_EXPIRY <= expiration <= Consts.MAX_JWT_EXPIRY\n            ), expiration\n\n        now = int(time.time())\n        payload = {\n            \"iat\": now + self.jwt_issued_at,\n            \"exp\": now + (expiration if expiration is not None else self.jwt_expiry),\n            \"iss\": self.integration_id,\n        }\n        encrypted = jwt.encode(payload, key=self.private_key, algorithm=\"RS256\")\n\n        if isinstance(encrypted, bytes):\n            encrypted = encrypted.decode(\"utf-8\")\n\n        return encrypted\n\n    def get_access_token(self, installation_id, permissions=None):\n        \"\"\"\n        :calls: `POST /app/installations/{installation_id}/access_tokens <https://docs.github.com/en/rest/apps/apps#create-an-installation-access-token-for-an-app>`\n        :param installation_id: int\n        :param permissions: dict\n        :return: :class:`github.InstallationAuthorization.InstallationAuthorization`\n        \"\"\"\n        if permissions is None:\n            permissions = {}\n\n        if not isinstance(permissions, dict):\n            raise GithubException(\n                status=400, data={\"message\": \"Invalid permissions\"}, headers=None\n            )\n\n        body = {\"permissions\": permissions}\n        headers, response = self.__requester.requestJsonAndCheck(\n            \"POST\",\n            f\"/app/installations/{installation_id}/access_tokens\",\n            headers=self._get_headers(),\n            input=body,\n        )\n\n        return InstallationAuthorization(\n            requester=self.__requester,\n            headers=headers,\n            attributes=response,\n            completed=True,\n        )\n\n    @deprecated.deprecated(\"Use get_repo_installation\")\n    def get_installation(self, owner, repo):\n        \"\"\"\n        Deprecated by get_repo_installation\n\n        :calls: `GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app>`\n        :param owner: str\n        :param repo: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/repos/{owner}/{repo}/installation\")\n\n    def get_installations(self):\n        \"\"\"\n        :calls: GET /app/installations <https://docs.github.com/en/rest/reference/apps#list-installations-for-the-authenticated-app>\n        :rtype: :class:`github.PaginatedList.PaginatedList[github.Installation.Installation]`\n        \"\"\"\n        return PaginatedList(\n            contentClass=Installation,\n            requester=self.__requester,\n            firstUrl=\"/app/installations\",\n            firstParams=None,\n            headers=self._get_headers(),\n            list_item=\"installations\",\n        )\n\n    def get_org_installation(self, org):\n        \"\"\"\n        :calls: `GET /orgs/{org}/installation <https://docs.github.com/en/rest/apps/apps#get-an-organization-installation-for-the-authenticated-app>`\n        :param org: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/orgs/{org}/installation\")\n\n    def get_repo_installation(self, owner, repo):\n        \"\"\"\n        :calls: `GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app>`\n        :param owner: str\n        :param repo: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/repos/{owner}/{repo}/installation\")\n\n    def get_user_installation(self, username):\n        \"\"\"\n        :calls: `GET /users/{username}/installation <https://docs.github.com/en/rest/apps/apps#get-a-user-installation-for-the-authenticated-app>`\n        :param username: str\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/users/{username}/installation\")\n\n    def get_app_installation(self, installation_id):\n        \"\"\"\n        :calls: `GET /app/installations/{installation_id} <https://docs.github.com/en/rest/apps/apps#get-an-installation-for-the-authenticated-app>`\n        :param installation_id: int\n        :rtype: :class:`github.Installation.Installation`\n        \"\"\"\n        return self._get_installed_app(url=f\"/app/installations/{installation_id}\")\n", "path": "github/GithubIntegration.py"}]}