Skip to content

Commit 7f7d228

Browse files
Add enable and disable a Workflow (#3088)
- add method to disable a workflow ([API reference](https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#disable-a-workflow)) - add method to enable a workflow ([API reference](https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#enable-a-workflow)) Fixes #2846 --------- Co-authored-by: Enrico Minack <github@enrico.minack.dev>
1 parent 8aef11c commit 7f7d228

File tree

6 files changed

+157
-0
lines changed

6 files changed

+157
-0
lines changed

github/Workflow.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,22 @@ def get_runs(
214214
list_item="workflow_runs",
215215
)
216216

217+
def disable(self) -> bool:
218+
"""
219+
:calls: `PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable <https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#disable-a-workflow>`_
220+
:rtype: bool
221+
"""
222+
status, _, _ = self._requester.requestJson("PUT", f"{self.url}/disable")
223+
return status == 204
224+
225+
def enable(self) -> bool:
226+
"""
227+
:calls: `PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable <https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#enable-a-workflow>`_
228+
:rtype: bool
229+
"""
230+
status, _, _ = self._requester.requestJson("PUT", f"{self.url}/enable")
231+
return status == 204
232+
217233
def _useAttributes(self, attributes: dict[str, Any]) -> None:
218234
if "badge_url" in attributes: # pragma no branch
219235
self._badge_url = self._makeStringAttribute(attributes["badge_url"])

tests/ReplayData/Workflow.testDisable.txt

Lines changed: 31 additions & 0 deletions
Large diffs are not rendered by default.

tests/ReplayData/Workflow.testDisabledWhenAlreadyDisabled.txt

Lines changed: 32 additions & 0 deletions
Large diffs are not rendered by default.

tests/ReplayData/Workflow.testEnable.txt

Lines changed: 31 additions & 0 deletions
Large diffs are not rendered by default.

tests/ReplayData/Workflow.testEnableWhenAlreadyEnabled.txt

Lines changed: 31 additions & 0 deletions
Large diffs are not rendered by default.

tests/Workflow.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,19 @@ def testCreateDispatchWithString(self):
139139
def testCreateDispatchForNonTriggerEnabled(self):
140140
workflow = self.g.get_repo("wrecker/PyGithub").get_workflow("check.yml")
141141
self.assertFalse(workflow.create_dispatch("main"))
142+
143+
def testDisable(self):
144+
workflow = self.g.get_repo("nickrmcclorey/PyGithub").get_workflow("ci.yml")
145+
self.assertTrue(workflow.disable())
146+
147+
def testDisabledWhenAlreadyDisabled(self):
148+
workflow = self.g.get_repo("nickrmcclorey/PyGithub").get_workflow("ci.yml")
149+
self.assertFalse(workflow.disable())
150+
151+
def testEnable(self):
152+
workflow = self.g.get_repo("nickrmcclorey/PyGithub").get_workflow("ci.yml")
153+
self.assertTrue(workflow.enable())
154+
155+
def testEnableWhenAlreadyEnabled(self):
156+
workflow = self.g.get_repo("nickrmcclorey/PyGithub").get_workflow("ci.yml")
157+
self.assertTrue(workflow.enable())

0 commit comments

Comments
 (0)