From f5aa0f5ea004cd38c7e27662a548287c35e39df3 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Tue, 26 May 2026 23:22:18 +0530 Subject: [PATCH 1/4] SK-2850: loosen dependency versions --- requirements.txt | 6 +++--- setup.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index 687bfb9b..d9fd543e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,12 @@ python_dateutil >= 2.5.3 setuptools >= 21.0.0 -urllib3 >= 1.25.3, < 2.1.0 +urllib3 >= 1.25.3, < 3 pydantic >= 2 typing-extensions >= 4.7.1 DateTime~=5.5 -PyJWT~=2.9.0 +PyJWT>=2.9,<3 requests~=2.32.3 coverage cryptography -python-dotenv~=1.0.1 +python-dotenv>=1.0,<2 httpx \ No newline at end of file diff --git a/setup.py b/setup.py index a761dfc2..e667d729 100644 --- a/setup.py +++ b/setup.py @@ -26,15 +26,15 @@ install_requires=[ 'python_dateutil >= 2.5.3', 'setuptools >= 75.3.3', - 'urllib3 >= 1.25.3, <= 2.6.3', + 'urllib3 >= 1.25.3, < 3', 'pydantic >= 2', 'typing-extensions >= 4.7.1', 'DateTime~=5.5', - 'PyJWT~=2.9.0', + 'PyJWT >= 2.9, < 3', 'requests~=2.32.3', 'coverage', 'cryptography', - 'python-dotenv~=1.0.1', + 'python-dotenv >= 1.0, < 2', 'httpx' ], extras_require={ From bba8278c294b1225629eb24aa48172e29ae32195 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Wed, 27 May 2026 09:58:35 +0530 Subject: [PATCH 2/4] SK-2850: update dependency range for PyJWT --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e667d729..04c5c741 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ 'pydantic >= 2', 'typing-extensions >= 4.7.1', 'DateTime~=5.5', - 'PyJWT >= 2.9, < 3', + 'PyJWT >= 2.12, < 3', 'requests~=2.32.3', 'coverage', 'cryptography', From 17d6d046f307941bfaaf1cbb2ece64715ed78d98 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Wed, 27 May 2026 10:06:20 +0530 Subject: [PATCH 3/4] SK-2850: update python 3.9 support --- .github/workflows/ci.yml | 2 +- .github/workflows/main.yml | 2 +- requirements.txt | 2 +- setup.py | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fb88ae91..952ccb38 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,5 +20,5 @@ jobs: test: uses: ./.github/workflows/shared-tests.yml with: - python-version: '3.8' + python-version: '3.9' secrets: inherit diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bebe9f3d..6d35b5b4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,4 +9,4 @@ jobs: test: uses: ./.github/workflows/shared-tests.yml with: - python-version: '3.8' + python-version: '3.9' diff --git a/requirements.txt b/requirements.txt index d9fd543e..bc927eb5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ urllib3 >= 1.25.3, < 3 pydantic >= 2 typing-extensions >= 4.7.1 DateTime~=5.5 -PyJWT>=2.9,<3 +PyJWT>=2.12,<3 requests~=2.32.3 coverage cryptography diff --git a/setup.py b/setup.py index 04c5c741..1ed91ead 100644 --- a/setup.py +++ b/setup.py @@ -5,8 +5,8 @@ import sys -if sys.version_info < (3, 8): - raise RuntimeError("skyflow requires Python 3.8+") +if sys.version_info < (3, 9): + raise RuntimeError("skyflow requires Python 3.9+") current_version = '2.1.0' with open('README.md', 'r', encoding='utf-8') as f: @@ -43,5 +43,5 @@ 'ruff' ] }, - python_requires=">=3.8", + python_requires=">=3.9", ) From bbd86ef5823f90ebbb0200f4b17585e260f072a9 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Wed, 27 May 2026 10:19:30 +0530 Subject: [PATCH 4/4] SK-2850: update mock in tests --- tests/service_account/test__utils.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tests/service_account/test__utils.py b/tests/service_account/test__utils.py index 856d26bb..053a1c96 100644 --- a/tests/service_account/test__utils.py +++ b/tests/service_account/test__utils.py @@ -130,11 +130,25 @@ def test_get_service_account_token_missing_token_uri_key(self): get_service_account_token(CREDENTIALS_WITHOUT_TOKEN_URI, {}, None) self.assertEqual(context.exception.message, SkyflowMessages.Error.MISSING_TOKEN_URI.value) - def test_get_service_account_token_with_valid_credentials(self): + @patch("skyflow.service_account._utils.AuthClient") + @patch("skyflow.service_account._utils.get_signed_jwt") + def test_get_service_account_token_with_valid_credentials(self, mock_get_signed_jwt, mock_auth_client): + mock_get_signed_jwt.return_value = "signed" + mock_auth_api = mock_auth_client.return_value.get_auth_api.return_value + mock_auth_api.authentication_service_get_auth_token.return_value = type( + "obj", (), {"access_token": "mock_token", "token_type": "bearer"} + ) access_token, _ = get_service_account_token(VALID_SERVICE_ACCOUNT_CREDS, {}, None) self.assertTrue(access_token) - def test_get_service_account_token_with_snake_case_creds(self): + @patch("skyflow.service_account._utils.AuthClient") + @patch("skyflow.service_account._utils.get_signed_jwt") + def test_get_service_account_token_with_snake_case_creds(self, mock_get_signed_jwt, mock_auth_client): + mock_get_signed_jwt.return_value = "signed" + mock_auth_api = mock_auth_client.return_value.get_auth_api.return_value + mock_auth_api.authentication_service_get_auth_token.return_value = type( + "obj", (), {"access_token": "mock_token", "token_type": "bearer"} + ) access_token, _ = get_service_account_token(SNAKE_CASE_CREDS, {}, None) self.assertTrue(access_token)