From 8ae5faca530a62910525f1fa69071183af6d42e3 Mon Sep 17 00:00:00 2001 From: Ori Kotek Date: Tue, 25 Jul 2023 16:52:18 +0300 Subject: [PATCH] Fix cyclic dependency --- pr_agent/algo/pr_processing.py | 3 ++- pr_agent/git_providers/git_provider.py | 4 ---- pr_agent/git_providers/github_provider.py | 11 ++++++----- pr_agent/servers/utils.py | 4 ++++ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/pr_agent/algo/pr_processing.py b/pr_agent/algo/pr_processing.py index 94cc1a00..45ef40b2 100644 --- a/pr_agent/algo/pr_processing.py +++ b/pr_agent/algo/pr_processing.py @@ -3,6 +3,8 @@ from __future__ import annotations import logging from typing import Tuple, Union, Callable, List +from github import RateLimitExceededException + from pr_agent.algo import MAX_TOKENS from pr_agent.algo.git_patch_processing import convert_to_hunks_with_lines_numbers, extend_patch, handle_patch_deletions from pr_agent.algo.language_handler import sort_files_by_main_languages @@ -10,7 +12,6 @@ from pr_agent.algo.token_handler import TokenHandler from pr_agent.algo.utils import load_large_diff from pr_agent.config_loader import settings from pr_agent.git_providers.git_provider import GitProvider -from git_provider import RateLimitExceeded DELETED_FILES_ = "Deleted files:\n" diff --git a/pr_agent/git_providers/git_provider.py b/pr_agent/git_providers/git_provider.py index 97dbe8ab..677c2eb1 100644 --- a/pr_agent/git_providers/git_provider.py +++ b/pr_agent/git_providers/git_provider.py @@ -137,7 +137,3 @@ class IncrementalPR: self.first_new_commit_sha = None self.last_seen_commit_sha = None - -class RateLimitExceeded(Exception): - """Raised when the git provider API rate limit has been exceeded.""" - pass \ No newline at end of file diff --git a/pr_agent/git_providers/github_provider.py b/pr_agent/git_providers/github_provider.py index a9979a78..7f617937 100644 --- a/pr_agent/git_providers/github_provider.py +++ b/pr_agent/git_providers/github_provider.py @@ -3,15 +3,16 @@ from datetime import datetime from typing import Optional, Tuple from urllib.parse import urlparse -from github import AppAuthentication, Github, Auth, GithubException -from git_provider import RateLimitExceeded +from github import AppAuthentication, Auth, Github, GithubException +from retry import retry from pr_agent.config_loader import settings -from .git_provider import FilePatchInfo, GitProvider, IncrementalPR from ..algo.language_handler import is_valid_file from ..algo.utils import load_large_diff -from retry import retry +from .git_provider import FilePatchInfo, GitProvider, IncrementalPR +from ..servers.utils import RateLimitExceeded + class GithubProvider(GitProvider): def __init__(self, pr_url: Optional[str] = None, incremental=IncrementalPR(False)): @@ -79,7 +80,7 @@ class GithubProvider(GitProvider): return self.file_set.values() return self.pr.get_files() - @retry(exceptions=(GithubException.RateLimitExceededException), + @retry(exceptions=RateLimitExceeded, tries=settings.github.ratelimit_retries, delay=2, backoff=2, jitter=(1, 3)) def get_diff_files(self) -> list[FilePatchInfo]: try: diff --git a/pr_agent/servers/utils.py b/pr_agent/servers/utils.py index 942ac449..c24b880c 100644 --- a/pr_agent/servers/utils.py +++ b/pr_agent/servers/utils.py @@ -21,3 +21,7 @@ def verify_signature(payload_body, secret_token, signature_header): if not hmac.compare_digest(expected_signature, signature_header): raise HTTPException(status_code=403, detail="Request signatures didn't match!") + +class RateLimitExceeded(Exception): + """Raised when the git provider API rate limit has been exceeded.""" + pass