Skip to content

Commit a14383b

Browse files
committed
feat(async): fixup some errors in async implementation
1 parent 47b41d5 commit a14383b

File tree

5 files changed

+27
-29
lines changed

5 files changed

+27
-29
lines changed

gitlab/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import warnings
1919

2020
from .client import AsyncGitlab, Gitlab
21+
from .const import *
2122

2223
__title__ = "python-gitlab"
2324
__version__ = "2.0.1"
@@ -27,5 +28,3 @@
2728
__copyright__ = "Copyright 2013-2019 Gauvain Pocentek"
2829

2930
warnings.filterwarnings("default", category=DeprecationWarning, module="^gitlab")
30-
31-
__all__ = [Gitlab, AsyncGitlab]

gitlab/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ async def __anext__(self):
226226
return await self.anext()
227227

228228
async def anext(self):
229-
data = await self._list.next()
229+
data = await self._list.anext()
230230
return self._obj_cls(self.manager, data)
231231

232232
@property

gitlab/client.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
"""Wrapper for the GitLab API."""
1818

1919
import importlib
20-
from typing import Any
20+
import time
21+
from typing import Union
2122

22-
import gitlab.config
2323
import httpx
24+
25+
import gitlab
26+
import gitlab.config
2427
from gitlab import exceptions as exc
2528
from gitlab import utils
2629
from gitlab.exceptions import on_http_error
@@ -41,7 +44,7 @@ def _sanitize(value):
4144

4245

4346
class BaseGitlab:
44-
_httpx_client_class: Any[httpx.Client, httpx.AsyncClient]
47+
_httpx_client_class: Union[httpx.Client, httpx.AsyncClient]
4548

4649
"""Represents a GitLab server connection.
4750
@@ -73,7 +76,7 @@ def __init__(
7376
http_password=None,
7477
timeout=None,
7578
api_version="4",
76-
session=None,
79+
client=None,
7780
per_page=None,
7881
pagination=None,
7982
order_by=None,
@@ -85,7 +88,7 @@ def __init__(
8588
#: Timeout to use for requests to gitlab server
8689
self.timeout = timeout
8790
#: Headers that will be used in request to GitLab
88-
self.headers = {"User-Agent": "%s/%s" % (__title__, __version__)}
91+
self.headers = {"User-Agent": "%s/%s" % (gitlab.__title__, gitlab.__version__)}
8992

9093
#: Whether SSL certificates should be validated
9194
self.ssl_verify = ssl_verify
@@ -97,8 +100,7 @@ def __init__(
97100
self.job_token = job_token
98101
self._set_auth_info()
99102

100-
#: Create a session object for requests
101-
self.session = session or requests.Session()
103+
self.client = client or self._get_client()
102104

103105
self.per_page = per_page
104106
self.pagination = pagination
@@ -239,7 +241,7 @@ def version(self):
239241
"""
240242
raise NotImplemented
241243

242-
async def lint(self, content, **kwargs):
244+
def lint(self, content, **kwargs):
243245
"""Validate a gitlab CI configuration.
244246
245247
Args:
@@ -673,7 +675,7 @@ def http_request(
673675
if "Retry-After" in result.headers:
674676
wait_time = int(result.headers["Retry-After"])
675677
cur_retries += 1
676-
await asyncio.sleep(wait_time)
678+
time.sleep(wait_time)
677679
continue
678680

679681
error_message = result.content

gitlab/exceptions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,13 @@ def wrapped_f(*args, **kwargs):
272272
if not asyncio.iscoroutine(result):
273273
return result
274274

275-
async def awaiter():
275+
async def awaiter(result):
276276
try:
277-
await result
277+
return await result
278278
except GitlabHttpError as e:
279279
raise error(e.error_message, e.response_code, e.response_body)
280280

281-
return awaiter
281+
return awaiter(result)
282282

283283
return wrapped_f
284284

gitlab/mixins.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,21 @@
2525
from gitlab import utils
2626

2727

28-
def update_attrs():
28+
def update_attrs(f):
2929
"""Update attrs with returned server_data
3030
3131
Updates object if data returned or coroutine
3232
"""
3333

34-
def wrap(f):
35-
@functools.wraps(f)
36-
def wrapped_f(self, *args, **kwargs):
37-
server_data = f(*args, **kwargs)
38-
if asyncio.iscoroutine(server_data):
39-
return self._aupdate_attrs(server_data)
40-
else:
41-
return self._update_attrs(server_data)
42-
43-
return wrapped_f
34+
@functools.wraps(f)
35+
def wrapped_f(self, *args, **kwargs):
36+
server_data = f(self, *args, **kwargs)
37+
if asyncio.iscoroutine(server_data):
38+
return self._aupdate_attrs(server_data)
39+
else:
40+
return self._update_attrs(server_data)
4441

45-
return wrap
42+
return wrapped_f
4643

4744

4845
class GetMixin:
@@ -128,7 +125,7 @@ def _list_or_object_list(self, server_data):
128125

129126
async def _alist_or_object_list(self, server_data):
130127
server_data = await server_data
131-
return self._list_or_object_list
128+
return self._list_or_object_list(server_data)
132129

133130
@exc.on_http_error(exc.GitlabListError)
134131
def list(self, **kwargs):
@@ -325,7 +322,7 @@ def update(self, id=None, new_data=None, **kwargs):
325322
return http_method(path, post_data=new_data, files=files, **kwargs)
326323

327324

328-
class SetMixin(object):
325+
class SetMixin:
329326
@exc.on_http_error(exc.GitlabSetError)
330327
def set(self, key, value, **kwargs):
331328
"""Create or update the object.

0 commit comments

Comments
 (0)