diff options
Diffstat (limited to 'gitlab/client.py')
| -rw-r--r-- | gitlab/client.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gitlab/client.py b/gitlab/client.py index dc6b6e6..b3223e5 100644 --- a/gitlab/client.py +++ b/gitlab/client.py @@ -20,6 +20,7 @@ import os import re import time from typing import Any, cast, Dict, List, Optional, Tuple, TYPE_CHECKING, Union +from urllib import parse import requests import requests.utils @@ -677,11 +678,15 @@ class Gitlab: GitlabHttpError: When the return code is not 2xx """ query_data = query_data or {} - url = self._build_url(path) + raw_url = self._build_url(path) - params: Dict[str, Any] = {} + # parse user-provided URL params to ensure we don't add our own duplicates + parsed = parse.urlparse(raw_url) + params = parse.parse_qs(parsed.query) utils.copy_dict(src=query_data, dest=params) + url = raw_url.replace(parsed.query, "").strip("?") + # Deal with kwargs: by default a user uses kwargs to send data to the # gitlab server, but this generates problems (python keyword conflicts # and python-gitlab/gitlab conflicts). |
