diff --git a/src/firebolt/async_db/cursor.py b/src/firebolt/async_db/cursor.py index 54cab67250..6d1e1da320 100644 --- a/src/firebolt/async_db/cursor.py +++ b/src/firebolt/async_db/cursor.py @@ -1,7 +1,6 @@ from __future__ import annotations import logging -import os import time from abc import ABCMeta, abstractmethod from functools import wraps @@ -16,6 +15,7 @@ Tuple, Union, ) +from urllib.parse import urljoin from httpx import URL, Headers, Response, codes @@ -381,7 +381,7 @@ async def _api_request( if self.parameters: parameters = {**self.parameters, **parameters} return await self._client.request( - url=os.path.join(self.engine_url, path or ""), + url=urljoin(self.engine_url.rstrip("/") + "/", path or ""), method="POST", params=parameters, content=query, @@ -451,7 +451,7 @@ async def _api_request( if self.parameters: parameters = {**self.parameters, **parameters} return await self._client.request( - url=os.path.join(self.engine_url, path or ""), + url=urljoin(self.engine_url.rstrip("/") + "/", path or ""), method="POST", params={ **(parameters or dict()), diff --git a/src/firebolt/db/cursor.py b/src/firebolt/db/cursor.py index ac8641ec98..6c994f92d5 100644 --- a/src/firebolt/db/cursor.py +++ b/src/firebolt/db/cursor.py @@ -1,7 +1,6 @@ from __future__ import annotations import logging -import os import time from abc import ABCMeta, abstractmethod from typing import ( @@ -14,6 +13,7 @@ Tuple, Union, ) +from urllib.parse import urljoin from httpx import URL, Headers, Response, codes @@ -331,7 +331,7 @@ def _api_request( if self.parameters: parameters = {**self.parameters, **parameters} return self._client.request( - url=os.path.join(self.engine_url, path or ""), + url=urljoin(self.engine_url.rstrip("/") + "/", path or ""), method="POST", params=parameters, content=query, @@ -398,7 +398,7 @@ def _api_request( if self.parameters: parameters = {**self.parameters, **parameters} return self._client.request( - url=os.path.join(self.engine_url, path or ""), + url=urljoin(self.engine_url.rstrip("/") + "/", path or ""), method="POST", params={ **(parameters or dict()),