Skip to content

Commit eb727f4

Browse files
authored
Add issue_url in pr body (#1116)
* add issue_url in pr body * fix tests
1 parent 7765aae commit eb727f4

File tree

4 files changed

+12
-14
lines changed

4 files changed

+12
-14
lines changed

patchwork/steps/PR/typed.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class PRInputs(TypedDict, total=False):
3131
scm_url: Annotated[str, StepTypeConfig(is_config=True)]
3232
gitlab_api_key: Annotated[str, StepTypeConfig(is_config=True)]
3333
github_api_key: Annotated[str, StepTypeConfig(is_config=True)]
34+
issue_url: Annotated[str, StepTypeConfig(is_config=True)]
3435

3536

3637
class PROutputs(TypedDict):

patchwork/steps/PreparePR/PreparePR.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@
33

44
from patchwork.logger import logger
55
from patchwork.step import Step, StepStatus
6+
from patchwork.steps.PreparePR.typed import PreparePRInputs, PreparePROutputs
67

78

8-
class PreparePR(Step):
9-
required_keys = {"modified_code_files"}
9+
class PreparePR(Step, input_class=PreparePRInputs, output_class=PreparePROutputs):
1010

1111
def __init__(self, inputs: dict):
1212
super().__init__(inputs)
13-
if not all(key in inputs.keys() for key in self.required_keys):
14-
raise ValueError(f'Missing required data: "{self.required_keys}"')
15-
16-
if len(inputs["modified_code_files"]) < 1:
17-
logger.warning("No modified files to prepare a PR for.")
1813
self.modified_code_files = inputs["modified_code_files"]
14+
if len(self.modified_code_files) < 1:
15+
logger.warning("No modified files to prepare a PR for.")
1916

20-
self.header = f"This pull request from patched fixes {len(self.modified_code_files)} issues."
21-
if "pr_header" in inputs.keys():
22-
self.header = inputs["pr_header"]
17+
issue_url = inputs.get("issue_url")
18+
self.header = inputs.get("pr_header")
19+
if self.header is None and issue_url is None:
20+
self.header = f"This pull request from patched fixes {len(self.modified_code_files)} issues."
21+
elif self.header is None and issue_url is not None:
22+
self.header = f"This pull request from patched fixes [issue]({issue_url})."
2323

2424
def run(self) -> dict:
2525
if len(self.modified_code_files) == 0:

patchwork/steps/PreparePR/typed.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class __PreparePRRequiredInputs(TypedDict):
99

1010
class PreparePRInputs(__PreparePRRequiredInputs, total=False):
1111
pr_header: Annotated[str, StepTypeConfig(is_config=True)]
12+
issue_url: Annotated[str, StepTypeConfig(is_config=True)]
1213

1314

1415
class PreparePROutputs(TypedDict):

tests/steps/test_PreparePR.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@ def prepare_pr_instance():
1515
return PreparePR(inputs)
1616

1717

18-
def test_init_required_keys(prepare_pr_instance):
19-
assert prepare_pr_instance.required_keys == {"modified_code_files"}
20-
21-
2218
def test_init_inputs(prepare_pr_instance):
2319
assert prepare_pr_instance.modified_code_files == [
2420
{"path": "file1", "start_line": 1, "end_line": 2, "commit_message": "commit msg"},

0 commit comments

Comments
 (0)