26
26
DEFAULT_REQUEST_RATE_LIMIT_PER_MINUTE = int (13000 / 60 )
27
27
DEFAULT_MAX_RETRIES = 20
28
28
DEFAULT_PAGE_SIZE = 100
29
+ DEFAULT_MAX_RETRY_WAIT_SECONDS = 300 # 5 minutes
29
30
30
31
31
32
logger = get_plugin_logger (__name__ )
@@ -71,15 +72,20 @@ def __init__(
71
72
github_hostname : str = "api.github.com" ,
72
73
* ,
73
74
user_agent : str | None = None ,
74
- per_page : int = DEFAULT_PAGE_SIZE ,
75
- max_retries : int = DEFAULT_MAX_RETRIES ,
76
- rate_limit_per_minute : int = DEFAULT_REQUEST_RATE_LIMIT_PER_MINUTE ,
77
- max_retry_wait_seconds : int = 60 * 5 ,
75
+ per_page : int | None = None ,
76
+ max_retries : int | None = None ,
77
+ rate_limit_per_minute : int | None = None ,
78
+ max_retry_wait_seconds : int | None = None ,
78
79
):
79
- if per_page < 1 :
80
+ if per_page is None :
81
+ per_page = DEFAULT_PAGE_SIZE
82
+ elif per_page < 1 :
80
83
msg = "page_size must be an integer greater than 0"
81
84
raise ValueError (msg )
82
- if max_retries < 0 :
85
+
86
+ if max_retries is None :
87
+ max_retries = DEFAULT_MAX_RETRIES
88
+ elif max_retries < 0 :
83
89
msg = "max_retries must be a positive integer"
84
90
raise ValueError (msg )
85
91
@@ -99,12 +105,23 @@ def __init__(
99
105
self ._default_headers ["User-Agent" ] = user_agent
100
106
self ._max_retries = max_retries
101
107
102
- self ._rate_limit = RateLimitItemPerMinute (rate_limit_per_minute , 1 )
108
+ self ._rate_limit = RateLimitItemPerMinute (
109
+ (
110
+ DEFAULT_REQUEST_RATE_LIMIT_PER_MINUTE
111
+ if rate_limit_per_minute is None
112
+ else rate_limit_per_minute
113
+ ),
114
+ 1 ,
115
+ )
103
116
logger .info ("GitHub REST RateLimit set to %s" , self ._rate_limit )
104
117
self ._rate_limiter = MovingWindowRateLimiter (self .limit_storage )
105
118
self ._session = httpx .AsyncClient ()
106
119
107
- self .max_retry_wait = max_retry_wait_seconds
120
+ max_retry_wait_seconds = (
121
+ DEFAULT_MAX_RETRY_WAIT_SECONDS
122
+ if max_retry_wait_seconds is None
123
+ else max_retry_wait_seconds
124
+ )
108
125
self ._retryer = AsyncRetrying (
109
126
wait = wait_random_exponential (
110
127
max = max_retry_wait_seconds ,
0 commit comments