mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-04 21:00:40 +08:00
@ -14,22 +14,6 @@ from pr_agent.git_providers.git_provider import get_main_pr_language
|
|||||||
|
|
||||||
|
|
||||||
class PRAddDocs:
|
class PRAddDocs:
|
||||||
"""
|
|
||||||
The PRAddDocs class is responsible for generating documentation for the code in a PR.
|
|
||||||
It uses AI models to predict the documentation for the new or edited code components.
|
|
||||||
It also handles the interaction with the git provider to get the PR details and to publish the generated documentation.
|
|
||||||
|
|
||||||
Attributes:
|
|
||||||
git_provider: An instance of the git provider class.
|
|
||||||
main_language: The main language of the PR.
|
|
||||||
is_extended: A boolean indicating whether the extended mode is enabled.
|
|
||||||
ai_handler: An instance of the AiHandler class.
|
|
||||||
patches_diff: The diff of the PR.
|
|
||||||
prediction: The predicted documentation.
|
|
||||||
cli_mode: A boolean indicating whether the CLI mode is enabled.
|
|
||||||
vars: A dictionary containing various information about the PR.
|
|
||||||
token_handler: An instance of the TokenHandler class.
|
|
||||||
"""
|
|
||||||
def __init__(self, pr_url: str, cli_mode=False, args: list = None):
|
def __init__(self, pr_url: str, cli_mode=False, args: list = None):
|
||||||
|
|
||||||
self.git_provider = get_git_provider()(pr_url)
|
self.git_provider = get_git_provider()(pr_url)
|
||||||
@ -119,12 +103,6 @@ Attributes:
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
def push_inline_docs_suggestions(self, data):
|
def push_inline_docs_suggestions(self, data):
|
||||||
"""
|
|
||||||
This method publishes the generated documentation as inline suggestions in the PR.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
data: A dictionary containing the generated documentation.
|
|
||||||
"""
|
|
||||||
code_suggestions = []
|
code_suggestions = []
|
||||||
|
|
||||||
if not data['Code Documentation']:
|
if not data['Code Documentation']:
|
||||||
@ -156,18 +134,6 @@ Attributes:
|
|||||||
self.git_provider.publish_code_suggestions([code_suggestion])
|
self.git_provider.publish_code_suggestions([code_suggestion])
|
||||||
|
|
||||||
def dedent_code(self, relevant_file, relevant_lines_start, new_code_snippet, add_original_line=False):
|
def dedent_code(self, relevant_file, relevant_lines_start, new_code_snippet, add_original_line=False):
|
||||||
"""
|
|
||||||
This method dedents the new code snippet to match the indentation of the original code.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
relevant_file: The file where the new code snippet should be added.
|
|
||||||
relevant_lines_start: The line number where the new code snippet should be added.
|
|
||||||
new_code_snippet: The new code snippet.
|
|
||||||
add_original_line: A boolean indicating whether to add the original line to the new code snippet.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The dedented new code snippet.
|
|
||||||
"""
|
|
||||||
try: # dedent code snippet
|
try: # dedent code snippet
|
||||||
self.diff_files = self.git_provider.diff_files if self.git_provider.diff_files \
|
self.diff_files = self.git_provider.diff_files if self.git_provider.diff_files \
|
||||||
else self.git_provider.get_diff_files()
|
else self.git_provider.get_diff_files()
|
||||||
@ -192,16 +158,6 @@ Attributes:
|
|||||||
return new_code_snippet
|
return new_code_snippet
|
||||||
|
|
||||||
async def _prepare_prediction_extended(self, model: str) -> dict:
|
async def _prepare_prediction_extended(self, model: str) -> dict:
|
||||||
"""
|
|
||||||
This method prepares the prediction for the documentation in extended mode.
|
|
||||||
It gets the PR diff and uses an AI model to predict the documentation for each chunk of the diff.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
model: The name of the AI model to use for the prediction.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
A dictionary containing the predicted documentation for each chunk of the diff.
|
|
||||||
"""
|
|
||||||
logging.info('Getting PR diff...')
|
logging.info('Getting PR diff...')
|
||||||
patches_diff_list = get_pr_multi_diffs(self.git_provider, self.token_handler, model,
|
patches_diff_list = get_pr_multi_diffs(self.git_provider, self.token_handler, model,
|
||||||
max_calls=get_settings().pr_code_suggestions.max_number_of_calls)
|
max_calls=get_settings().pr_code_suggestions.max_number_of_calls)
|
||||||
|
Reference in New Issue
Block a user