(Chore): Use OH logger instead of prints for resolver (#7407)

This commit is contained in:
Rohit Malhotra 2025-03-22 13:28:02 -04:00 committed by GitHub
parent d343e4ed9a
commit f2a742130d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 42 additions and 41 deletions

View File

@ -178,12 +178,12 @@ class GithubIssueHandler(IssueHandlerInterface):
return all_comments if all_comments else None
def branch_exists(self, branch_name: str) -> bool:
print(f'Checking if branch {branch_name} exists...')
logger.info(f'Checking if branch {branch_name} exists...')
response = requests.get(
f'{self.base_url}/branches/{branch_name}', headers=self.headers
)
exists = response.status_code == 200
print(f'Branch {branch_name} exists: {exists}')
logger.info(f'Branch {branch_name} exists: {exists}')
return exists
def get_branch_name(self, base_branch_name: str) -> str:
@ -253,8 +253,8 @@ class GithubIssueHandler(IssueHandlerInterface):
json=review_data,
)
if review_response.status_code != 201:
print(
f'Warning: Failed to request review from {reviewer}: {review_response.text}'
logger.warning(
f'Failed to request review from {reviewer}: {review_response.text}'
)
def send_comment_msg(self, issue_number: int, msg: str) -> None:
@ -271,11 +271,11 @@ class GithubIssueHandler(IssueHandlerInterface):
comment_url, headers=self.headers, json=comment_data
)
if comment_response.status_code != 201:
print(
logger.error(
f'Failed to post comment: {comment_response.status_code} {comment_response.text}'
)
else:
print(f'Comment added to the PR: {msg}')
logger.info(f'Comment added to the PR: {msg}')
def get_context_from_external_issues_references(
self,

View File

@ -181,12 +181,12 @@ class GitlabIssueHandler(IssueHandlerInterface):
return all_comments if all_comments else None
def branch_exists(self, branch_name: str) -> bool:
print(f'Checking if branch {branch_name} exists...')
logger.info(f'Checking if branch {branch_name} exists...')
response = requests.get(
f'{self.base_url}/repository/branches/{branch_name}', headers=self.headers
)
exists = response.status_code == 200
print(f'Branch {branch_name} exists: {exists}')
logger.info(f'Branch {branch_name} exists: {exists}')
return exists
def get_branch_name(self, base_branch_name: str) -> str:
@ -263,8 +263,8 @@ class GitlabIssueHandler(IssueHandlerInterface):
json=review_data,
)
if review_response.status_code != 200:
print(
f'Warning: Failed to request review from {reviewer}: {review_response.text}'
logger.warning(
f'Failed to request review from {reviewer}: {review_response.text}'
)
def send_comment_msg(self, issue_number: int, msg: str) -> None:
@ -281,11 +281,11 @@ class GitlabIssueHandler(IssueHandlerInterface):
comment_url, headers=self.headers, json=comment_data
)
if comment_response.status_code != 201:
print(
logger.error(
f'Failed to post comment: {comment_response.status_code} {comment_response.text}'
)
else:
print(f'Comment added to the PR: {msg}')
logger.info(f'Comment added to the PR: {msg}')
def get_context_from_external_issues_references(
self,

View File

@ -27,9 +27,9 @@ from openhands.resolver.utils import (
def cleanup() -> None:
print('Cleaning up child processes...')
logger.info('Cleaning up child processes...')
for process in mp.active_children():
print(f'Terminating child process: {process.name}')
logger.info(f'Terminating child process: {process.name}')
process.terminate()
process.join()
@ -222,7 +222,7 @@ async def resolve_issues(
await asyncio.gather(*[run_with_semaphore(task) for task in tasks])
except KeyboardInterrupt:
print('KeyboardInterrupt received. Cleaning up...')
logger.info('KeyboardInterrupt received. Cleaning up...')
cleanup()
output_fp.close()

View File

@ -36,7 +36,7 @@ def apply_patch(repo_dir: str, patch: str) -> None:
diffs = parse_patch(patch)
for diff in diffs:
if not diff.header.new_path:
print('Warning: Could not determine file to patch')
logger.warning('Could not determine file to patch')
continue
# Remove both "a/" and "b/" prefixes from paths
@ -56,7 +56,7 @@ def apply_patch(repo_dir: str, patch: str) -> None:
assert old_path is not None
if os.path.exists(old_path):
os.remove(old_path)
print(f'Deleted file: {old_path}')
logger.info(f'Deleted file: {old_path}')
continue
# Handle file rename
@ -106,7 +106,7 @@ def apply_patch(repo_dir: str, patch: str) -> None:
split_content = []
if diff.changes is None:
print(f'Warning: No changes to apply for {old_path}')
logger.warning(f'No changes to apply for {old_path}')
continue
new_content = apply_diff(diff, split_content)
@ -119,7 +119,7 @@ def apply_patch(repo_dir: str, patch: str) -> None:
for line in new_content:
print(line, file=f)
print('Patch applied successfully')
logger.info('Patch applied successfully')
def initialize_repo(
@ -143,7 +143,7 @@ def initialize_repo(
shutil.rmtree(dest_dir)
shutil.copytree(src_dir, dest_dir)
print(f'Copied repository to {dest_dir}')
logger.info(f'Copied repository to {dest_dir}')
# Checkout the base commit if provided
if base_commit:
@ -154,7 +154,7 @@ def initialize_repo(
text=True,
)
if result.returncode != 0:
print(f'Error checking out commit: {result.stderr}')
logger.info(f'Error checking out commit: {result.stderr}')
raise RuntimeError('Failed to check out commit')
return dest_dir
@ -185,14 +185,14 @@ def make_commit(repo_dir: str, issue: Issue, issue_type: str) -> None:
shell=True,
check=True,
)
print('Git user configured as openhands')
logger.info('Git user configured as openhands')
# Add all changes to the git index
result = subprocess.run(
f'git -C {repo_dir} add .', shell=True, capture_output=True, text=True
)
if result.returncode != 0:
print(f'Error adding files: {result.stderr}')
logger.error(f'Error adding files: {result.stderr}')
raise RuntimeError('Failed to add files to git')
# Check the status of the git index
@ -205,7 +205,9 @@ def make_commit(repo_dir: str, issue: Issue, issue_type: str) -> None:
# If there are no changes, raise an error
if not status_result.stdout.strip():
print(f'No changes to commit for issue #{issue.number}. Skipping commit.')
logger.error(
f'No changes to commit for issue #{issue.number}. Skipping commit.'
)
raise RuntimeError('ERROR: Openhands failed to make code changes.')
# Prepare the commit message
@ -269,7 +271,7 @@ def send_pull_request(
)
# Get the default branch or use specified target branch
print('Getting base branch...')
logger.info('Getting base branch...')
if target_branch:
base_branch = target_branch
exists = handler.branch_exists(branch_name=target_branch)
@ -277,17 +279,17 @@ def send_pull_request(
raise ValueError(f'Target branch {target_branch} does not exist')
else:
base_branch = handler.get_default_branch_name()
print(f'Base branch: {base_branch}')
logger.info(f'Base branch: {base_branch}')
# Create and checkout the new branch
print('Creating new branch...')
logger.info('Creating new branch...')
result = subprocess.run(
['git', '-C', patch_dir, 'checkout', '-b', branch_name],
capture_output=True,
text=True,
)
if result.returncode != 0:
print(f'Error creating new branch: {result.stderr}')
logger.error(f'Error creating new branch: {result.stderr}')
raise RuntimeError(
f'Failed to create a new branch {branch_name} in {patch_dir}:'
)
@ -297,7 +299,7 @@ def send_pull_request(
handler._strategy.set_owner(push_owner)
print('Pushing changes...')
logger.info('Pushing changes...')
push_url = handler.get_clone_url()
result = subprocess.run(
['git', '-C', patch_dir, 'push', push_url, branch_name],
@ -305,7 +307,7 @@ def send_pull_request(
text=True,
)
if result.returncode != 0:
print(f'Error pushing changes: {result.stderr}')
logger.error(f'Error pushing changes: {result.stderr}')
raise RuntimeError('Failed to push changes to the remote repository')
# Prepare the PR data: title and body
@ -334,13 +336,12 @@ def send_pull_request(
pr_data = handler.create_pull_request(data)
url = pr_data['html_url']
print(pr_data)
# Request review if a reviewer was specified
if reviewer and pr_type != 'branch':
number = pr_data['number']
handler.request_reviewers(reviewer, number)
print(
logger.info(
f'{pr_type} created: {url}\n\n--- Title: {final_pr_title}\n\n--- Body:\n{pr_body}'
)
@ -393,11 +394,11 @@ def update_existing_pull_request(
# Push the changes to the existing branch
result = subprocess.run(push_command, shell=True, capture_output=True, text=True)
if result.returncode != 0:
print(f'Error pushing changes: {result.stderr}')
logger.error(f'Error pushing changes: {result.stderr}')
raise RuntimeError('Failed to push changes to the remote repository')
pr_url = handler.get_pull_url(issue.number)
print(f'Updated pull request {pr_url} with new patches.')
logger.info(f'Updated pull request {pr_url} with new patches.')
# Generate a summary of all comment success indicators for PR message
if not comment_message and additional_message:
@ -463,7 +464,7 @@ def process_single_issue(
pr_title: str | None = None,
) -> None:
if not resolver_output.success and not send_on_failure:
print(
logger.info(
f'Issue {resolver_output.issue.number} was not successfully resolved. Skipping PR creation.'
)
return
@ -529,7 +530,7 @@ def process_all_successful_issues(
output_path = os.path.join(output_dir, 'output.jsonl')
for resolver_output in load_all_resolver_outputs(output_path):
if resolver_output.success:
print(f'Processing issue {resolver_output.issue.number}')
logger.info(f'Processing issue {resolver_output.issue.number}')
process_single_issue(
output_dir,
resolver_output,

View File

@ -50,7 +50,7 @@ def identify_token(token: str, selected_repo: str | None = None) -> Platform:
if github_repo_response.status_code == 200:
return Platform.GITHUB
except requests.RequestException as e:
print(f'Error connecting to GitHub API (selected_repo check): {e}')
logger.error(f'Error connecting to GitHub API (selected_repo check): {e}')
# Try GitHub PAT format (token)
github_url = 'https://api.github.com/user'
@ -61,7 +61,7 @@ def identify_token(token: str, selected_repo: str | None = None) -> Platform:
if github_response.status_code == 200:
return Platform.GITHUB
except requests.RequestException as e:
print(f'Error connecting to GitHub API: {e}')
logger.error(f'Error connecting to GitHub API: {e}')
# Try GitLab token
gitlab_url = 'https://gitlab.com/api/v4/user'
@ -72,7 +72,7 @@ def identify_token(token: str, selected_repo: str | None = None) -> Platform:
if gitlab_response.status_code == 200:
return Platform.GITLAB
except requests.RequestException as e:
print(f'Error connecting to GitLab API: {e}')
logger.error(f'Error connecting to GitLab API: {e}')
return Platform.INVALID
@ -128,9 +128,9 @@ def codeact_user_response(
def cleanup() -> None:
print('Cleaning up child processes...')
logger.info('Cleaning up child processes...')
for process in mp.active_children():
print(f'Terminating child process: {process.name}')
logger.info(f'Terminating child process: {process.name}')
process.terminate()
process.join()