Update main.py#13
Conversation
PR Reviewer Guide 🔍(Review updated until commit 5b2345f)Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||
|
/compliance |
PR Compliance Guide 🔍(Compliance updated until commit 5b2345f)Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label Previous compliance checksCompliance check up to commit 5b2345f
|
||||||||||||||||||||||||||||||||||||||||||||
|
/config |
🛠️ Wiki configuration file settings:[rag_arguments]
enable_rag=true
debug_mode=true
🛠️ Local configuration file settings:
🛠️ Global configuration file settings:# [config]
# disable_auto_feedback = true
[pr_reviewer]
enable_review_labels_effort = true
[pr_code_suggestions]
focus_only_on_problems=true
[best_practices]
enable_global_best_practices = true
organization_name="Qodo"
[linear]
linear_base_url = "https://linear.app/qodo"
🛠️ PR-Agent final configurations:==================== CONFIG ====================
config.enable_custom_labels = False
config.model_reasoning = 'vertex_ai/gemini-2.5-pro'
config.model = 'anthropic/claude-4-sonnet-20250514'
config.model_turbo = 'anthropic/claude-4-sonnet-20250514'
config.fallback_models = ['bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0', 'gpt-4.1-2025-04-14']
config.git_provider = 'github'
config.publish_output = True
config.publish_output_no_suggestions = True
config.publish_output_progress = True
config.verbosity_level = 0
config.use_extra_bad_extensions = False
config.publish_logs = False
config.debug_mode = False
config.use_wiki_settings_file = True
config.use_repo_settings_file = True
config.use_global_settings_file = True
config.use_global_wiki_settings_file = False
config.disable_auto_feedback = False
config.ai_timeout = 120
config.clone_repo_instead_of_fetch = False
config.response_language = 'en-US'
config.patch_extension_skip_types = ['.md', '.txt']
config.extra_allowed_extensions = []
config.allow_dynamic_context = True
config.allow_forward_dynamic_context = True
config.max_extra_lines_before_dynamic_context = 12
config.patch_extra_lines_before = 5
config.patch_extra_lines_after = 1
config.ai_handler = 'litellm'
config.cli_mode = False
config.trial_git_org_max_invokes_per_month = 75
config.trial_ratio_close_to_limit = 0.8
config.calculate_context = True
config.disable_checkboxes = False
config.output_relevant_configurations = False
config.large_patch_policy = 'clip'
config.seed = -1
config.temperature = 0.2
config.allow_dynamic_context_ab_testing = False
config.choose_dynamic_context_ab_testing_ratio = 0.5
config.ignore_pr_title = ['^\\[Auto\\]', '^Auto']
config.ignore_pr_target_branches = []
config.ignore_pr_source_branches = []
config.ignore_pr_labels = []
config.allow_only_specific_folders = []
config.ignore_pr_authors = []
config.ignore_repositories = []
config.ignore_language_framework = []
config.is_auto_command = False
config.is_new_pr = False
config.enable_ai_metadata = True
config.present_reasoning = True
config.max_tickets = 10
config.max_tickets_chars = 8000
config.prevent_any_approval = False
config.enable_comment_approval = False
config.enable_auto_approval = False
config.auto_approve_for_low_review_effort = -1
config.auto_approve_for_no_suggestions = False
config.ensure_ticket_compliance = False
==================== PR_COMPLIANCE ====================
pr_compliance.enabled = True
pr_compliance.allow_repo_pr_compliance = True
pr_compliance.enable_global_pr_compliance = True
pr_compliance.max_lines_allowed = 2000
pr_compliance.wiki_compliance_str = ''
pr_compliance.local_repo_compliance_str = ''
pr_compliance.global_compliance_str = 'pr_compliances:\n - title: "When relevant, utilize early return"\n compliance_label: false\n objective: "In a code snippet containing multiple logic conditions (such as \'if-else\'), prefer an early return on edge cases than deep nesting"\n success_criteria: "When relevant, utilize early return that reduces nesting"\n failure_criteria: "Unjustified deep nesting that can be simplified by early return"\n\n - title: "Robust Error Handling"\n compliance_label: false\n objective: "Ensure potential errors and edge cases are anticipated and handled gracefully throughout the code"\n success_criteria: "All error scenarios are properly caught and handled with appropriate responses"\n failure_criteria: "Unhandled exceptions, ignored errors, or missing edge case handling"\n\n - title: "No Dead or Commented-Out Code"\n compliance_label: false\n objective: "Keep the codebase clean by ensuring all submitted code is active and necessary"\n success_criteria: "All code in the PR is active and serves a purpose; no commented-out blocks"\n failure_criteria: "Presence of unused, dead, or commented-out code sections"\n\n - title: "Consistent Naming Conventions"\n compliance_label: true\n objective: "All new variables, functions, and classes must follow the project\'s established naming standards"\n success_criteria: "All identifiers follow the established naming patterns (camelCase, snake_case, etc.)"\n failure_criteria: "Inconsistent or non-standard naming that deviates from project conventions"'
pr_compliance.enable_security_compliance = True
pr_compliance.enable_update_pr_compliance_checkbox = True
pr_compliance.enable_todo_scan = False
pr_compliance.enable_ticket_labels = False
pr_compliance.enable_no_ticket_labels = False
pr_compliance.check_pr_additional_content = False
pr_compliance.enable_compliance_labels_security = True
pr_compliance.enable_user_defined_compliance_labels = True
pr_compliance.enable_estimate_effort_to_review = True
pr_compliance.minimal_commits_for_incremental_compliance = 0
pr_compliance.minimal_minutes_for_incremental_compliance = 0
pr_compliance.require_all_thresholds_for_incremental_compliance = False
pr_compliance.persistent_comment = True
pr_compliance.enable_help_text = False
pr_compliance.extra_instructions = ''
==================== PR_DESCRIPTION ====================
pr_description.publish_labels = False
pr_description.add_original_user_description = True
pr_description.generate_ai_title = False
pr_description.extra_instructions = ''
pr_description.enable_pr_type = True
pr_description.final_update_message = True
pr_description.enable_help_text = False
pr_description.enable_help_comment = False
pr_description.bring_latest_tag = False
pr_description.enable_pr_diagram = True
pr_description.publish_description_as_comment = False
pr_description.publish_description_as_comment_persistent = True
pr_description.enable_semantic_files_types = True
pr_description.collapsible_file_list = 'adaptive'
pr_description.collapsible_file_list_threshold = 6
pr_description.inline_file_summary = False
pr_description.use_description_markers = False
pr_description.include_generated_by_header = True
pr_description.enable_large_pr_handling = True
pr_description.max_ai_calls = 4
pr_description.auto_create_ticket = False
==================== PR_QUESTIONS ====================
pr_questions.enable_help_text = False
==================== PR_CUSTOM_PROMPT ====================
pr_custom_prompt.prompt = 'The code suggestions should focus only on the following:\n- ...\n- ...\n...\n'
pr_custom_prompt.suggestions_score_threshold = 0
pr_custom_prompt.num_code_suggestions_per_chunk = 4
pr_custom_prompt.self_reflect_on_custom_suggestions = True
pr_custom_prompt.enable_help_text = False
==================== PR_ADD_DOCS ====================
pr_add_docs.extra_instructions = ''
pr_add_docs.docs_style = 'Sphinx'
pr_add_docs.file = ''
pr_add_docs.class_name = ''
==================== PR_UPDATE_CHANGELOG ====================
pr_update_changelog.push_changelog_changes = False
pr_update_changelog.extra_instructions = ''
pr_update_changelog.add_pr_link = True
pr_update_changelog.skip_ci_on_push = True
==================== PR_ANALYZE ====================
pr_analyze.enable_help_text = False
==================== PR_TEST ====================
pr_test.extra_instructions = ''
pr_test.testing_framework = ''
pr_test.num_tests = 3
pr_test.avoid_mocks = True
pr_test.file = ''
pr_test.class_name = ''
pr_test.enable_help_text = False
==================== PR_IMPROVE_COMPONENT ====================
pr_improve_component.num_code_suggestions = 4
pr_improve_component.extra_instructions = ''
pr_improve_component.file = ''
pr_improve_component.class_name = ''
==================== PR_HELP ====================
pr_help.force_local_db = False
pr_help.num_retrieved_snippets = 5
==================== PR_NEW_ISSUE ====================
pr_new_issue.label_to_prompt_part = {'general': 'general question', 'feature': 'feature request (may already be addressed in the documentation)', 'bug': 'possible bug report (may be a by design behavior)'}
pr_new_issue.supported_repos = ['qodo-ai/pr-agent']
==================== PR_HELP_DOCS ====================
pr_help_docs.repo_url = ''
pr_help_docs.repo_default_branch = 'main'
pr_help_docs.docs_path = 'docs'
pr_help_docs.exclude_root_readme = False
pr_help_docs.supported_doc_exts = ['.md', '.mdx', '.rst']
pr_help_docs.enable_help_text = False
==================== PR_SIMILAR_ISSUE ====================
pr_similar_issue.skip_comments = False
pr_similar_issue.force_update_dataset = False
pr_similar_issue.max_issues_to_scan = 500
pr_similar_issue.vectordb = 'pinecone'
==================== PR_FIND_SIMILAR_COMPONENT ====================
pr_find_similar_component.class_name = ''
pr_find_similar_component.file = ''
pr_find_similar_component.search_from_org = False
pr_find_similar_component.allow_fallback_less_words = True
pr_find_similar_component.number_of_results = 5
==================== AUTO_BEST_PRACTICES ====================
auto_best_practices.enable_auto_best_practices = True
auto_best_practices.utilize_auto_best_practices = True
auto_best_practices.extra_instructions = ''
auto_best_practices.min_suggestions_to_auto_best_practices = 10
auto_best_practices.number_of_days_to_update = 30
auto_best_practices.max_patterns = 5
auto_best_practices.minimal_date_to_update = '2025-01-26'
auto_best_practices.generate_new_best_practices = False
==================== PR_TO_TICKET ====================
pr_to_ticket.default_base_url = ''
pr_to_ticket.fallback_to_git_provider_issues = False
==================== PR_REVIEWER ====================
pr_reviewer.require_score_review = False
pr_reviewer.require_tests_review = True
pr_reviewer.require_estimate_effort_to_review = True
pr_reviewer.require_can_be_split_review = False
pr_reviewer.require_security_review = True
pr_reviewer.require_todo_scan = False
pr_reviewer.require_ticket_analysis_review = True
pr_reviewer.require_ticket_labels = False
pr_reviewer.require_no_ticket_labels = False
pr_reviewer.check_pr_additional_content = False
pr_reviewer.persistent_comment = True
pr_reviewer.extra_instructions = ''
pr_reviewer.final_update_message = True
pr_reviewer.enable_review_labels_security = True
pr_reviewer.enable_review_labels_effort = True
pr_reviewer.require_all_thresholds_for_incremental_review = False
pr_reviewer.minimal_commits_for_incremental_review = 0
pr_reviewer.minimal_minutes_for_incremental_review = 0
pr_reviewer.enable_intro_text = True
pr_reviewer.enable_help_text = False
pr_reviewer.max_number_of_rag_issues_rag_enabled = 1
==================== PR_CODE_SUGGESTIONS ====================
pr_code_suggestions.suggestions_depth = 'regular'
pr_code_suggestions.commitable_code_suggestions = False
pr_code_suggestions.decouple_hunks = False
pr_code_suggestions.dual_publishing_score_threshold = -1
pr_code_suggestions.focus_only_on_problems = True
pr_code_suggestions.allow_thumbs_up_down = False
pr_code_suggestions.enable_more_suggestions_checkbox = True
pr_code_suggestions.extra_instructions = ''
pr_code_suggestions.enable_help_text = False
pr_code_suggestions.enable_chat_text = False
pr_code_suggestions.enable_intro_text = True
pr_code_suggestions.persistent_comment = True
pr_code_suggestions.max_history_len = 5
pr_code_suggestions.apply_suggestions_checkbox = True
pr_code_suggestions.enable_chat_in_code_suggestions = True
pr_code_suggestions.apply_limit_scope = True
pr_code_suggestions.suggestions_score_threshold = 0
pr_code_suggestions.new_score_mechanism = True
pr_code_suggestions.new_score_mechanism_th_high = 9
pr_code_suggestions.new_score_mechanism_th_medium = 7
pr_code_suggestions.discard_unappliable_suggestions = False
pr_code_suggestions.num_code_suggestions_per_chunk = 3
pr_code_suggestions.num_best_practice_suggestions = 1
pr_code_suggestions.max_number_of_calls = 3
pr_code_suggestions.parallel_calls = True
pr_code_suggestions.final_clip_factor = 0.8
pr_code_suggestions.demand_code_suggestions_self_review = False
pr_code_suggestions.code_suggestions_self_review_text = '**Author self-review**: I have reviewed the PR code suggestions, and addressed the relevant ones.'
pr_code_suggestions.approve_pr_on_self_review = False
pr_code_suggestions.fold_suggestions_on_self_review = True
pr_code_suggestions.publish_post_process_suggestion_impact = True
pr_code_suggestions.wiki_page_accepted_suggestions = True
pr_code_suggestions.enable_local_self_reflect_in_large_prs = True
==================== BEST_PRACTICES ====================
best_practices.auto_best_practices_str = ''
best_practices.wiki_best_practices_str = ''
best_practices.local_repo_best_practices_str = ''
best_practices.global_best_practices_str = '<b>Pattern 1: Add proper error handling with try-except blocks and use get_logger().exception() instead of get_logger().error() when catching exceptions to automatically include traceback information.</b>\n\nExample code before:\n```\ntry:\n # Some code that might raise an exception\nexcept Exception as e:\n get_logger().error(f"Failed to process data: {e}", artifact={"traceback": traceback.format_exc()})\n```\n\nExample code after:\n```\ntry:\n # Some code that might raise an exception\nexcept Exception as e:\n get_logger().exception("Failed to process data", artifact={"error": e})\n```\n\n<details><summary>Relevant past discussions: </summary>\n\n- https://github.com/Codium-ai/pr-agent-pro/pull/822#discussion_r1918806145\n- https://github.com/Codium-ai/pr-agent-pro/pull/1068#discussion_r1986690209\n- https://github.com/Codium-ai/pr-agent-pro/pull/1068#discussion_r1986694028\n</details>'
best_practices.organization_name = 'Qodo'
best_practices.max_lines_allowed = 2000
best_practices.enable_global_best_practices = True
best_practices.allow_repo_best_practices = True
best_practices.num_best_practice_suggestions = 2
best_practices.enabled = True
==================== github_app ====================
github_app.bot_user = 'github-actions[bot]'
github_app.override_deployment_type = True
github_app.handle_pr_actions = ['opened', 'reopened', 'ready_for_review']
github_app.pr_commands = ['/describe --pr_description.final_update_message=false', '/review', '/improve']
github_app.feedback_on_draft_pr = False
github_app.handle_push_trigger = False
github_app.push_commands = ['/describe', '/review']
github_app.ignore_pr_title = []
github_app.ignore_bot_pr = True |
|
/help |
PR Agent Walkthrough 🤖Welcome to the PR Agent, an AI-powered tool for automated pull request analysis, feedback, suggestions and more. Here is a list of tools you can use to interact with the PR Agent:
(1) Note that each tool can be triggered automatically when a new PR is opened, or called manually by commenting on a PR. (2) Tools marked with [*] require additional parameters to be passed. For example, to invoke the |
|
/help how do I setup the jira inegration? |
Question:how do I setup the jira inegration? Answer:To set up Jira integration with Qodo Merge, you have several options depending on your Jira setup: Jira CloudOption 1: Jira App Authentication (Recommended)
Option 2: Email/Token Authentication
[jira]
jira_api_token = "YOUR_API_TOKEN"
jira_api_email = "YOUR_EMAIL"Jira Data Center/ServerUsing Basic Authentication: [jira]
jira_api_email = "your_username"
jira_api_token = "your_password"Using Personal Access Token (PAT): [jira]
jira_base_url = "YOUR_JIRA_BASE_URL" # e.g. https://jira.example.com
jira_api_token = "YOUR_API_TOKEN"Linking PRs to Jira TicketsAfter setup, link PRs to Jira tickets by:
For shortened ticket IDs, configure the base URL: [jira]
jira_base_url = "https://your-org.atlassian.net"Once configured, Qodo Merge will automatically fetch ticket context for the Relevant Sources:
|
|
/config |
🛠️ Wiki configuration file settings:[rag_arguments]
enable_rag=true
debug_mode=true
🛠️ Local configuration file settings:
🛠️ Global configuration file settings:# [config]
# disable_auto_feedback = true
[pr_reviewer]
enable_review_labels_effort = true
[pr_code_suggestions]
focus_only_on_problems=true
high_level_suggestions_enabled=true
new_diff_format=true
[best_practices]
enable_global_best_practices = true
organization_name="Qodo"
[linear]
linear_base_url = "https://linear.app/qodo"
🛠️ PR-Agent final configurations:==================== CONFIG ====================
config.enable_custom_labels = False
config.model_reasoning = 'vertex_ai/gemini-2.5-pro'
config.model = 'anthropic/claude-4-sonnet-20250514'
config.model_turbo = 'anthropic/claude-4-sonnet-20250514'
config.fallback_models = ['bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0', 'gpt-4.1-2025-04-14']
config.git_provider = 'github'
config.publish_output = True
config.publish_output_no_suggestions = True
config.publish_output_progress = True
config.verbosity_level = 0
config.use_extra_bad_extensions = False
config.publish_logs = False
config.debug_mode = False
config.use_wiki_settings_file = True
config.use_repo_settings_file = True
config.use_global_settings_file = True
config.use_global_wiki_settings_file = False
config.disable_auto_feedback = False
config.ai_timeout = 120
config.clone_repo_instead_of_fetch = False
config.response_language = 'en-US'
config.patch_extension_skip_types = ['.md', '.txt']
config.extra_allowed_extensions = []
config.allow_dynamic_context = True
config.allow_forward_dynamic_context = True
config.max_extra_lines_before_dynamic_context = 12
config.patch_extra_lines_before = 5
config.patch_extra_lines_after = 1
config.ai_handler = 'litellm'
config.cli_mode = False
config.invite_only_mode = False
config.trial_git_org_max_invokes_per_month = 75
config.trial_ratio_close_to_limit = 0.8
config.calculate_context = True
config.disable_checkboxes = False
config.output_relevant_configurations = False
config.large_patch_policy = 'clip'
config.seed = -1
config.temperature = 0.2
config.allow_dynamic_context_ab_testing = False
config.choose_dynamic_context_ab_testing_ratio = 0.5
config.ignore_pr_title = ['^\\[Auto\\]', '^Auto']
config.ignore_pr_target_branches = []
config.ignore_pr_source_branches = []
config.ignore_pr_labels = []
config.ignore_ticket_labels = []
config.allow_only_specific_folders = []
config.ignore_pr_authors = []
config.ignore_repositories = []
config.ignore_language_framework = []
config.is_auto_command = False
config.is_new_pr = False
config.enable_ai_metadata = True
config.present_reasoning = True
config.max_tickets = 10
config.max_tickets_chars = 8000
config.prevent_any_approval = False
config.enable_comment_approval = False
config.enable_auto_approval = False
config.auto_approve_for_low_review_effort = -1
config.auto_approve_for_no_suggestions = False
config.ensure_ticket_compliance = False
==================== PR_COMPLIANCE ====================
pr_compliance.enabled = True
pr_compliance.allow_repo_pr_compliance = True
pr_compliance.enable_global_pr_compliance = True
pr_compliance.max_lines_allowed = 2000
pr_compliance.local_wiki_compliance_str = ''
pr_compliance.global_wiki_pr_compliance = ''
pr_compliance.local_repo_compliance_str = ''
pr_compliance.global_repo_pr_compliance_str = ''
pr_compliance.global_compliance_str = 'pr_compliances:\n - title: "When relevant, utilize early return"\n compliance_label: false\n objective: "In a code snippet containing multiple logic conditions (such as \'if-else\'), prefer an early return on edge cases than deep nesting"\n success_criteria: "When relevant, utilize early return that reduces nesting"\n failure_criteria: "Unjustified deep nesting that can be simplified by early return"\n\n - title: "Robust Error Handling"\n compliance_label: false\n objective: "Ensure potential errors and edge cases are anticipated and handled gracefully throughout the code"\n success_criteria: "All error scenarios are properly caught and handled with appropriate responses"\n failure_criteria: "Unhandled exceptions, ignored errors, or missing edge case handling"\n\n - title: "No Dead or Commented-Out Code"\n compliance_label: false\n objective: "Keep the codebase clean by ensuring all submitted code is active and necessary"\n success_criteria: "All code in the PR is active and serves a purpose; no commented-out blocks"\n failure_criteria: "Presence of unused, dead, or commented-out code sections"\n\n - title: "Consistent Naming Conventions"\n compliance_label: true\n objective: "All new variables, functions, and classes must follow the project\'s established naming standards"\n success_criteria: "All identifiers follow the established naming patterns (camelCase, snake_case, etc.)"\n failure_criteria: "Inconsistent or non-standard naming that deviates from project conventions"'
pr_compliance.enable_security_compliance = True
pr_compliance.enable_update_pr_compliance_checkbox = True
pr_compliance.enable_todo_scan = False
pr_compliance.enable_ticket_labels = False
pr_compliance.enable_no_ticket_labels = False
pr_compliance.check_pr_additional_content = False
pr_compliance.enable_compliance_labels_security = True
pr_compliance.enable_user_defined_compliance_labels = True
pr_compliance.enable_estimate_effort_to_review = True
pr_compliance.minimal_commits_for_incremental_compliance = 0
pr_compliance.minimal_minutes_for_incremental_compliance = 0
pr_compliance.require_all_thresholds_for_incremental_compliance = False
pr_compliance.persistent_comment = True
pr_compliance.enable_help_text = False
pr_compliance.extra_instructions = ''
==================== PR_DESCRIPTION ====================
pr_description.publish_labels = False
pr_description.add_original_user_description = True
pr_description.generate_ai_title = False
pr_description.extra_instructions = ''
pr_description.enable_pr_type = True
pr_description.final_update_message = True
pr_description.enable_help_text = False
pr_description.enable_help_comment = False
pr_description.bring_latest_tag = False
pr_description.enable_pr_diagram = True
pr_description.publish_description_as_comment = False
pr_description.publish_description_as_comment_persistent = True
pr_description.enable_semantic_files_types = True
pr_description.collapsible_file_list = 'adaptive'
pr_description.collapsible_file_list_threshold = 8
pr_description.inline_file_summary = False
pr_description.use_description_markers = False
pr_description.include_generated_by_header = True
pr_description.enable_large_pr_handling = True
pr_description.max_ai_calls = 4
pr_description.auto_create_ticket = False
==================== PR_QUESTIONS ====================
pr_questions.enable_help_text = False
==================== PR_CUSTOM_PROMPT ====================
pr_custom_prompt.prompt = 'The code suggestions should focus only on the following:\n- ...\n- ...\n...\n'
pr_custom_prompt.suggestions_score_threshold = 0
pr_custom_prompt.num_code_suggestions_per_chunk = 4
pr_custom_prompt.self_reflect_on_custom_suggestions = True
pr_custom_prompt.enable_help_text = False
==================== PR_ADD_DOCS ====================
pr_add_docs.extra_instructions = ''
pr_add_docs.docs_style = 'Sphinx'
pr_add_docs.file = ''
pr_add_docs.class_name = ''
==================== PR_UPDATE_CHANGELOG ====================
pr_update_changelog.push_changelog_changes = False
pr_update_changelog.extra_instructions = ''
pr_update_changelog.add_pr_link = True
pr_update_changelog.skip_ci_on_push = True
==================== PR_ANALYZE ====================
pr_analyze.enable_help_text = False
==================== PR_TEST ====================
pr_test.extra_instructions = ''
pr_test.testing_framework = ''
pr_test.num_tests = 3
pr_test.avoid_mocks = True
pr_test.file = ''
pr_test.class_name = ''
pr_test.enable_help_text = False
==================== PR_IMPROVE_COMPONENT ====================
pr_improve_component.num_code_suggestions = 4
pr_improve_component.extra_instructions = ''
pr_improve_component.file = ''
pr_improve_component.class_name = ''
==================== PR_HELP ====================
pr_help.force_local_db = False
pr_help.num_retrieved_snippets = 5
==================== PR_NEW_ISSUE ====================
pr_new_issue.label_to_prompt_part = {'general': 'general question', 'feature': 'feature request (may already be addressed in the documentation)', 'bug': 'possible bug report (may be a by design behavior)'}
pr_new_issue.supported_repos = ['qodo-ai/pr-agent']
==================== PR_HELP_DOCS ====================
pr_help_docs.repo_url = ''
pr_help_docs.repo_default_branch = 'main'
pr_help_docs.docs_path = 'docs'
pr_help_docs.exclude_root_readme = False
pr_help_docs.supported_doc_exts = ['.md', '.mdx', '.rst']
pr_help_docs.enable_help_text = False
==================== PR_SIMILAR_ISSUE ====================
pr_similar_issue.skip_comments = False
pr_similar_issue.force_update_dataset = False
pr_similar_issue.max_issues_to_scan = 500
pr_similar_issue.vectordb = 'pinecone'
==================== PR_FIND_SIMILAR_COMPONENT ====================
pr_find_similar_component.class_name = ''
pr_find_similar_component.file = ''
pr_find_similar_component.search_from_org = False
pr_find_similar_component.allow_fallback_less_words = True
pr_find_similar_component.number_of_results = 5
==================== AUTO_BEST_PRACTICES ====================
auto_best_practices.enable_auto_best_practices = True
auto_best_practices.utilize_auto_best_practices = True
auto_best_practices.extra_instructions = ''
auto_best_practices.min_suggestions_to_auto_best_practices = 10
auto_best_practices.number_of_days_to_update = 30
auto_best_practices.max_patterns = 5
auto_best_practices.minimal_date_to_update = '2025-01-26'
auto_best_practices.generate_new_best_practices = False
==================== JIRA ====================
==================== PR_TO_TICKET ====================
pr_to_ticket.default_base_url = ''
pr_to_ticket.fallback_to_git_provider_issues = True
pr_to_ticket.direct_update_compliance = False
==================== PR_REVIEWER ====================
pr_reviewer.require_score_review = False
pr_reviewer.require_tests_review = True
pr_reviewer.require_estimate_effort_to_review = True
pr_reviewer.require_can_be_split_review = False
pr_reviewer.require_security_review = True
pr_reviewer.require_todo_scan = False
pr_reviewer.require_ticket_analysis_review = True
pr_reviewer.require_ticket_labels = False
pr_reviewer.require_no_ticket_labels = False
pr_reviewer.check_pr_additional_content = False
pr_reviewer.persistent_comment = True
pr_reviewer.extra_instructions = ''
pr_reviewer.final_update_message = True
pr_reviewer.enable_review_labels_security = True
pr_reviewer.enable_review_labels_effort = True
pr_reviewer.require_all_thresholds_for_incremental_review = False
pr_reviewer.minimal_commits_for_incremental_review = 0
pr_reviewer.minimal_minutes_for_incremental_review = 0
pr_reviewer.enable_intro_text = True
pr_reviewer.enable_help_text = False
pr_reviewer.max_number_of_rag_issues_rag_enabled = 1
==================== PR_CODE_SUGGESTIONS ====================
pr_code_suggestions.new_diff_format = True
pr_code_suggestions.suggestions_depth = 'regular'
pr_code_suggestions.commitable_code_suggestions = False
pr_code_suggestions.decouple_hunks = False
pr_code_suggestions.dual_publishing_score_threshold = -1
pr_code_suggestions.focus_only_on_problems = True
pr_code_suggestions.allow_thumbs_up_down = False
pr_code_suggestions.enable_suggestion_type_reuse = False
pr_code_suggestions.enable_more_suggestions_checkbox = True
pr_code_suggestions.high_level_suggestions_enabled = True
pr_code_suggestions.extra_instructions = ''
pr_code_suggestions.enable_help_text = False
pr_code_suggestions.enable_chat_text = False
pr_code_suggestions.enable_intro_text = True
pr_code_suggestions.persistent_comment = True
pr_code_suggestions.max_history_len = 5
pr_code_suggestions.apply_suggestions_checkbox = True
pr_code_suggestions.enable_chat_in_code_suggestions = True
pr_code_suggestions.apply_limit_scope = True
pr_code_suggestions.suggestions_score_threshold = 0
pr_code_suggestions.new_score_mechanism = True
pr_code_suggestions.new_score_mechanism_th_high = 9
pr_code_suggestions.new_score_mechanism_th_medium = 7
pr_code_suggestions.discard_unappliable_suggestions = False
pr_code_suggestions.num_code_suggestions_per_chunk = 3
pr_code_suggestions.num_best_practice_suggestions = 1
pr_code_suggestions.max_number_of_calls = 3
pr_code_suggestions.parallel_calls = True
pr_code_suggestions.final_clip_factor = 0.8
pr_code_suggestions.demand_code_suggestions_self_review = False
pr_code_suggestions.code_suggestions_self_review_text = '**Author self-review**: I have reviewed the PR code suggestions, and addressed the relevant ones.'
pr_code_suggestions.approve_pr_on_self_review = False
pr_code_suggestions.fold_suggestions_on_self_review = True
pr_code_suggestions.publish_post_process_suggestion_impact = True
pr_code_suggestions.wiki_page_accepted_suggestions = True
pr_code_suggestions.enable_local_self_reflect_in_large_prs = False
==================== BEST_PRACTICES ====================
best_practices.auto_best_practices_str = ''
best_practices.wiki_best_practices_str = ''
best_practices.global_wiki_best_practices = ''
best_practices.local_repo_best_practices_str = ''
best_practices.global_repo_best_practices_str = ''
best_practices.global_best_practices_str = '<b>Pattern 1: Add proper error handling with try-except blocks and use get_logger().exception() instead of get_logger().error() when catching exceptions to automatically include traceback information.</b>\n\nExample code before:\n```\ntry:\n # Some code that might raise an exception\nexcept Exception as e:\n get_logger().error(f"Failed to process data: {e}", artifact={"traceback": traceback.format_exc()})\n```\n\nExample code after:\n```\ntry:\n # Some code that might raise an exception\nexcept Exception as e:\n get_logger().exception("Failed to process data", artifact={"error": e})\n```\n\n<details><summary>Relevant past discussions: </summary>\n\n- https://github.com/Codium-ai/pr-agent-pro/pull/822#discussion_r1918806145\n- https://github.com/Codium-ai/pr-agent-pro/pull/1068#discussion_r1986690209\n- https://github.com/Codium-ai/pr-agent-pro/pull/1068#discussion_r1986694028\n</details>'
best_practices.organization_name = 'Qodo'
best_practices.max_lines_allowed = 2000
best_practices.enable_global_best_practices = True
best_practices.allow_repo_best_practices = True
best_practices.enabled = True
==================== LINEAR ====================
linear.linear_base_url = 'https://linear.app/qodo'
==================== github_app ====================
github_app.bot_user = 'github-actions[bot]'
github_app.override_deployment_type = True
github_app.handle_pr_actions = ['opened', 'reopened', 'ready_for_review']
github_app.pr_commands = ['/describe --pr_description.final_update_message=false', '/review', '/improve']
github_app.feedback_on_draft_pr = False
github_app.handle_push_trigger = False
github_app.push_commands = ['/describe', '/review']
github_app.ignore_pr_title = []
github_app.ignore_bot_pr = True |
|
/help |
Qodo Merge Walkthrough 🤖Welcome to Qodo Merge, an AI-powered tool for automated pull request analysis, feedback, suggestions and more. Here is a list of tools you can use to interact with Qodo Merge:
(1) Note that each tool can be triggered automatically when a new PR is opened, or called manually by commenting on a PR. (2) Tools marked with [*] require additional parameters to be passed. For example, to invoke the |
|
/help how do i define a new best practices file? |
Question:how do i define a new best practices file? Answer:There are several ways to define a new best practices file in Qodo Merge: Local Best PracticesCreate a Global Hierarchical Best PracticesFor organizations managing multiple repositories, you can set up a hierarchical system:
Writing Effective Best Practices
Example pattern: Example code after: try:
return process_pr_data(data)
except Exception as e:
logger.exception("Failed to process request", extra={"error": e}) |
|
/help |
Qodo Merge Walkthrough 🤖Welcome to Qodo Merge, an AI-powered tool for automated pull request analysis, feedback, suggestions and more. Here is a list of tools you can use to interact with Qodo Merge:
(1) Note that each tool can be triggered automatically when a new PR is opened, or called manually by commenting on a PR. (2) Tools marked with [*] require additional parameters to be passed. For example, to invoke the |
|
/improve |
PR Code Suggestions ✨No code suggestions found for the PR. |
|
/help |
Qodo Merge Walkthrough 🤖Welcome to Qodo Merge, an AI-powered tool for automated pull request analysis, feedback, suggestions and more. Here is a list of tools you can use to interact with Qodo Merge:
(1) Note that each tool can be triggered automatically when a new PR is opened, or called manually by commenting on a PR. (2) Tools marked with [*] require additional parameters to be passed. For example, to invoke the |
|
/help |
Qodo Merge Walkthrough 🤖Welcome to Qodo Merge, an AI-powered tool for automated pull request analysis, feedback, suggestions and more. Here is a list of tools you can use to interact with Qodo Merge:
(1) Note that each tool can be triggered automatically when a new PR is opened, or called manually by commenting on a PR. (2) Tools marked with [*] require additional parameters to be passed. For example, to invoke the |
User description
https://qodo-confluence.atlassian.net/browse/SCRUM-1
PR Type
Other
Description
Remove device configuration parameters from HP 4284A LCRmeter driver
Clean up initialization code by removing port settings
Simplify commands_to_restore list structure
Changes diagram
Changes walkthrough 📝
main.py
Remove device configuration and command parameterssrc/LCRmeter-HP_4284A/main.py
configuration