diff --git a/github/ProjectColumn.py b/github/ProjectColumn.py index 9b6d436e..7792867d 100644 --- a/github/ProjectColumn.py +++ b/github/ProjectColumn.py @@ -146,6 +146,50 @@ class ProjectColumn(github.GithubObject.CompletableGithubObject): self._requester, headers, data, completed=True ) + def move(self, position): + """ + :calls: `POST POST /projects/columns/:column_id/moves `_ + :param position: string + :rtype: bool + """ + assert isinstance(position, str), position + post_parameters = {"position": position} + status, _, _ = self._requester.requestJson( + "POST", + self.url + "/moves", + input=post_parameters, + headers={"Accept": Consts.mediaTypeProjectsPreview}, + ) + return status == 201 + + def delete(self): + """ + :calls: `DELETE /projects/columns/:column_id `_ + :param name: string + :rtype: None + """ + assert isinstance(name, str), name + patch_parameters = {"name": name} + + headers, data = self._requester.requestJsonAndCheck( + "PATCH", + self.url, + input=patch_parameters, + headers={"Accept": Consts.mediaTypeProjectsPreview}, + ) + + self._useAttributes(data) + def _initAttributes(self): self._cards_url = github.GithubObject.NotSet self._created_at = github.GithubObject.NotSet diff --git a/github/ProjectColumn.pyi b/github/ProjectColumn.pyi index 5e9f12ad..9634ae9a 100644 --- a/github/ProjectColumn.pyi +++ b/github/ProjectColumn.pyi @@ -34,3 +34,7 @@ class ProjectColumn(CompletableGithubObject): def updated_at(self) -> datetime: ... @property def url(self) -> str: ... + def move(self, position: str) -> bool: ... + def delete(self) -> bool: ... + def edit(self, name: str) -> None: ... + diff --git a/tests/ProjectColumn.py b/tests/ProjectColumn.py index 8be10f53..f824f6d7 100644 --- a/tests/ProjectColumn.py +++ b/tests/ProjectColumn.py @@ -28,33 +28,38 @@ from . import Framework class ProjectColumn(Framework.TestCase): def setUp(self): super().setUp() - self.project_column = self.g.get_project_column(8700460) + self.get_project_column = self.g.get_project_column(8700460) + self.move_project_column = self.g.get_project_column(8748065) def testGetProjectColumn(self): - self.assertEqual(self.project_column.id, 8700460) - self.assertEqual(self.project_column.name, "c1") + self.assertEqual(self.get_project_column.id, 8700460) + self.assertEqual(self.get_project_column.name, "c1") self.assertEqual( - self.project_column.cards_url, + self.get_project_column.cards_url, "https://api.github.com/projects/columns/8700460/cards", ) self.assertEqual( - self.project_column.node_id, "MDEzOlByb2plY3RDb2x1bW44NzAwNDYw" + self.get_project_column.node_id, "MDEzOlByb2plY3RDb2x1bW44NzAwNDYw" ) self.assertEqual( - self.project_column.project_url, "https://api.github.com/projects/4294766" + self.get_project_column.project_url, + "https://api.github.com/projects/4294766", ) self.assertEqual( - self.project_column.url, "https://api.github.com/projects/columns/8700460" + self.get_project_column.url, + "https://api.github.com/projects/columns/8700460", ) self.assertEqual( - self.project_column.created_at, datetime.datetime(2020, 4, 13, 20, 29, 53) + self.get_project_column.created_at, + datetime.datetime(2020, 4, 13, 20, 29, 53), ) self.assertEqual( - self.project_column.updated_at, datetime.datetime(2020, 4, 14, 18, 9, 38) + self.get_project_column.updated_at, + datetime.datetime(2020, 4, 14, 18, 9, 38), ) def testGetAllCards(self): - cards = self.project_column.get_cards(archived_state="all") + cards = self.get_project_column.get_cards(archived_state="all") self.assertEqual(cards.totalCount, 3) self.assertEqual(cards[0].id, 36285184) self.assertEqual(cards[0].note, "Note3") @@ -64,13 +69,13 @@ class ProjectColumn(Framework.TestCase): self.assertEqual(cards[2].note, "Note1") def testGetArchivedCards(self): - cards = self.project_column.get_cards(archived_state="archived") + cards = self.get_project_column.get_cards(archived_state="archived") self.assertEqual(cards.totalCount, 1) self.assertEqual(cards[0].id, 36281516) self.assertEqual(cards[0].note, "Note1") def testGetNotArchivedCards(self): - cards = self.project_column.get_cards(archived_state="not_archived") + cards = self.get_project_column.get_cards(archived_state="not_archived") self.assertEqual(cards.totalCount, 2) self.assertEqual(cards[0].id, 36285184) self.assertEqual(cards[0].note, "Note3") @@ -78,7 +83,7 @@ class ProjectColumn(Framework.TestCase): self.assertEqual(cards[1].note, "Note2") def testGetCards(self): - cards = self.project_column.get_cards() + cards = self.get_project_column.get_cards() self.assertEqual(cards.totalCount, 2) self.assertEqual(cards[0].id, 36285184) self.assertEqual(cards[0].note, "Note3") @@ -86,6 +91,24 @@ class ProjectColumn(Framework.TestCase): self.assertEqual(cards[1].note, "Note2") def testCreateCard(self): - new_card = self.project_column.create_card(note="NewCard") + new_card = self.get_project_column.create_card(note="NewCard") self.assertEqual(new_card.id, 36290228) self.assertEqual(new_card.note, "NewCard") + + def testDelete(self): + project_column = self.g.get_project_column(8747987) + self.assertTrue(project_column.delete()) + + def testEdit(self): + self.move_project_column.edit("newTestColumn") + self.assertEqual(self.move_project_column.id, 8748065) + self.assertEqual(self.move_project_column.name, "newTestColumn") + + def testMoveFirst(self): + self.assertTrue(self.move_project_column.move(position="first")) + + def testMoveLast(self): + self.assertTrue(self.move_project_column.move(position="last")) + + def testMoveAfter(self): + self.assertTrue(self.move_project_column.move(position="after:8700460")) diff --git a/tests/ReplayData/ProjectColumn.setUp.txt b/tests/ReplayData/ProjectColumn.setUp.txt index 4bd64dbc..780e2883 100644 --- a/tests/ReplayData/ProjectColumn.setUp.txt +++ b/tests/ReplayData/ProjectColumn.setUp.txt @@ -9,3 +9,13 @@ None [('Date', 'Tue, 14 Apr 2020 18:17:57 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Server', 'GitHub.com'), ('Status', '200 OK'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4971'), ('X-RateLimit-Reset', '1586891696'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"71d35582bd4b20a516cb5f77785e78f7"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, 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', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'E8EE:6E5A:25E489C:2CBBC06:5E95FE55')] {"url":"https://api.github.com/projects/columns/8700460","project_url":"https://api.github.com/projects/4294766","cards_url":"https://api.github.com/projects/columns/8700460/cards","id":8700460,"node_id":"MDEzOlByb2plY3RDb2x1bW44NzAwNDYw","name":"c1","created_at":"2020-04-13T20:29:53Z","updated_at":"2020-04-14T18:09:38Z"} +https +GET +api.github.com +None +/projects/columns/8748065 +{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +None +200 +[('Date', 'Thu, 16 Apr 2020 05:51:15 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Server', 'GitHub.com'), ('Status', '200 OK'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4949'), ('X-RateLimit-Reset', '1587018429'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"300ff83801042bc987edec9dded63773"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, 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', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D59E:FA92:18965F9:1CB2924:5E97F252')] +{"url":"https://api.github.com/projects/columns/8748065","project_url":"https://api.github.com/projects/4294766","cards_url":"https://api.github.com/projects/columns/8748065/cards","id":8748065,"node_id":"MDEzOlByb2plY3RDb2x1bW44NzQ4MDY1","name":"newTestColumn","created_at":"2020-04-16T05:42:37Z","updated_at":"2020-04-16T05:44:21Z"} diff --git a/tests/ReplayData/ProjectColumn.testDelete.txt b/tests/ReplayData/ProjectColumn.testDelete.txt new file mode 100644 index 00000000..47e745c9 --- /dev/null +++ b/tests/ReplayData/ProjectColumn.testDelete.txt @@ -0,0 +1,22 @@ +https +GET +api.github.com +None +/projects/columns/8747987 +{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +None +200 +[('Date', 'Thu, 16 Apr 2020 05:35:02 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Server', 'GitHub.com'), ('Status', '200 OK'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4968'), ('X-RateLimit-Reset', '1587018428'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"aa3a7d465eb2292ad4dae97e54d06bc1"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, 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', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D4DC:200F7:11C86CC:14C5AC2:5E97EE86')] +{"url":"https://api.github.com/projects/columns/8747987","project_url":"https://api.github.com/projects/4294766","cards_url":"https://api.github.com/projects/columns/8747987/cards","id":8747987,"node_id":"MDEzOlByb2plY3RDb2x1bW44NzQ3OTg3","name":"test","created_at":"2020-04-16T05:34:23Z","updated_at":"2020-04-16T05:34:23Z"} + +https +DELETE +api.github.com +None +/projects/columns/8747987 +{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +None +204 +[('Date', 'Thu, 16 Apr 2020 05:35:03 GMT'), ('Server', 'GitHub.com'), ('Status', '204 No Content'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4967'), ('X-RateLimit-Reset', '1587018428'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, 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', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('X-GitHub-Request-Id', 'D4DE:18633:3644A6:3E3C58:5E97EE87')] + + diff --git a/tests/ReplayData/ProjectColumn.testEdit.txt b/tests/ReplayData/ProjectColumn.testEdit.txt new file mode 100644 index 00000000..f63585ed --- /dev/null +++ b/tests/ReplayData/ProjectColumn.testEdit.txt @@ -0,0 +1,11 @@ +https +PATCH +api.github.com +None +/projects/columns/8748065 +{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} +{"name": "newTestColumn"} +200 +[('Date', 'Thu, 16 Apr 2020 05:44:21 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Server', 'GitHub.com'), ('Status', '200 OK'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4958'), ('X-RateLimit-Reset', '1587018429'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"300ff83801042bc987edec9dded63773"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, 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', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8556:29EB3:181AABA:1C1A3C6:5E97F0B4')] +{"url":"https://api.github.com/projects/columns/8748065","project_url":"https://api.github.com/projects/4294766","cards_url":"https://api.github.com/projects/columns/8748065/cards","id":8748065,"node_id":"MDEzOlByb2plY3RDb2x1bW44NzQ4MDY1","name":"newTestColumn","created_at":"2020-04-16T05:42:37Z","updated_at":"2020-04-16T05:44:21Z"} + diff --git a/tests/ReplayData/ProjectColumn.testMoveAfter.txt b/tests/ReplayData/ProjectColumn.testMoveAfter.txt new file mode 100644 index 00000000..fca4e868 --- /dev/null +++ b/tests/ReplayData/ProjectColumn.testMoveAfter.txt @@ -0,0 +1,11 @@ +https +POST +api.github.com +None +/projects/columns/8748065/moves +{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} +{"position": "after:8700460"} +201 +[('Date', 'Thu, 16 Apr 2020 05:51:15 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Content-Length', '2'), ('Server', 'GitHub.com'), ('Status', '201 Created'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4948'), ('X-RateLimit-Reset', '1587018428'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', '"5cdeb7b7e65678a2f212994c02e98f49"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, 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', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('X-GitHub-Request-Id', 'D5A0:29EAD:D1CCE7:F3F095:5E97F253')] +{} + diff --git a/tests/ReplayData/ProjectColumn.testMoveFirst.txt b/tests/ReplayData/ProjectColumn.testMoveFirst.txt new file mode 100644 index 00000000..ef7a9da7 --- /dev/null +++ b/tests/ReplayData/ProjectColumn.testMoveFirst.txt @@ -0,0 +1,11 @@ +https +POST +api.github.com +None +/projects/columns/8748065/moves +{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} +{"position": "first"} +201 +[('Date', 'Thu, 16 Apr 2020 05:50:57 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Content-Length', '2'), ('Server', 'GitHub.com'), ('Status', '201 Created'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4954'), ('X-RateLimit-Reset', '1587018429'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', '"5cdeb7b7e65678a2f212994c02e98f49"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, 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', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('X-GitHub-Request-Id', 'D58C:E2C8:12DBE29:15FC0D8:5E97F240')] +{} + diff --git a/tests/ReplayData/ProjectColumn.testMoveLast.txt b/tests/ReplayData/ProjectColumn.testMoveLast.txt new file mode 100644 index 00000000..8d510118 --- /dev/null +++ b/tests/ReplayData/ProjectColumn.testMoveLast.txt @@ -0,0 +1,11 @@ +https +POST +api.github.com +None +/projects/columns/8748065/moves +{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'} +{"position": "last"} +201 +[('Date', 'Thu, 16 Apr 2020 05:51:06 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Content-Length', '2'), ('Server', 'GitHub.com'), ('Status', '201 Created'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4951'), ('X-RateLimit-Reset', '1587018429'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', '"5cdeb7b7e65678a2f212994c02e98f49"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, 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', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('X-GitHub-Request-Id', 'D59A:18639:129F5E7:15BB83D:5E97F249')] +{} +