From 854136a47ebe87dbe0320bb1cd7b193eeee9270e Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Wed, 30 Jul 2025 12:34:56 -0700 Subject: [PATCH 1/5] ADFS labs were decommissioned since late July 2025 --- tests/test_e2e.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/test_e2e.py b/tests/test_e2e.py index dde26f0d..e3b49f4e 100644 --- a/tests/test_e2e.py +++ b/tests/test_e2e.py @@ -841,12 +841,14 @@ def test_user_account(self): class WorldWideTestCase(LabBasedTestCase): + _ADFS_LABS_DECOMMISSIONED = "ADFS labs were decommissioned since July 2025 until further notice" def test_aad_managed_user(self): # Pure cloud config = self.get_lab_user(usertype="cloud") config["password"] = self.get_lab_user_secret(config["lab_name"]) self._test_username_password(**config) + @unittest.skip(_ADFS_LABS_DECOMMISSIONED) def test_adfs4_fed_user(self): config = self.get_lab_user(usertype="federated", federationProvider="ADFSv4") config["password"] = self.get_lab_user_secret(config["lab_name"]) @@ -864,6 +866,7 @@ def test_adfs2_fed_user(self): config["password"] = self.get_lab_user_secret(config["lab_name"]) self._test_username_password(**config) + @unittest.skip(_ADFS_LABS_DECOMMISSIONED) def test_adfs2019_fed_user(self): try: config = self.get_lab_user(usertype="federated", federationProvider="ADFSv2019") @@ -892,6 +895,7 @@ def test_msa_pt_app_signin_via_organizations_authority_without_login_hint(self): prompt="select_account", # In MSAL Python, this resets login_hint )) + @unittest.skip(_ADFS_LABS_DECOMMISSIONED) def test_ropc_adfs2019_onprem(self): # Configuration is derived from https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/blob/4.7.0/tests/Microsoft.Identity.Test.Common/TestConstants.cs#L250-L259 config = self.get_lab_user(usertype="onprem", federationProvider="ADFSv2019") @@ -900,6 +904,7 @@ def test_ropc_adfs2019_onprem(self): config["password"] = self.get_lab_user_secret(config["lab_name"]) self._test_username_password(**config) + @unittest.skip(_ADFS_LABS_DECOMMISSIONED) def test_adfs2019_onprem_acquire_token_by_auth_code(self): """When prompted, you can manually login using this account: @@ -913,6 +918,7 @@ def test_adfs2019_onprem_acquire_token_by_auth_code(self): config["port"] = 8080 self._test_acquire_token_by_auth_code(**config) + @unittest.skip(_ADFS_LABS_DECOMMISSIONED) def test_adfs2019_onprem_acquire_token_by_auth_code_flow(self): config = self.get_lab_user(usertype="onprem", federationProvider="ADFSv2019") self._test_acquire_token_by_auth_code_flow(**dict( @@ -922,6 +928,7 @@ def test_adfs2019_onprem_acquire_token_by_auth_code_flow(self): port=8080, )) + @unittest.skip(_ADFS_LABS_DECOMMISSIONED) def test_adfs2019_onprem_acquire_token_interactive(self): config = self.get_lab_user(usertype="onprem", federationProvider="ADFSv2019") self._test_acquire_token_interactive(**dict( From f3651cd09f2c3f23f6bd1bdd0663183b93d69821 Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Mon, 28 Jul 2025 12:34:56 -0700 Subject: [PATCH 2/5] MSAL Python 1.34.0b1 --- msal/sku.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msal/sku.py b/msal/sku.py index 4dc5c138..9b871873 100644 --- a/msal/sku.py +++ b/msal/sku.py @@ -2,5 +2,5 @@ """ # The __init__.py will import this. Not the other way around. -__version__ = "1.33.0" +__version__ = "1.34.0b1" SKU = "MSAL.Python" From e6997a9780af71e2f3809287d1ab88c08e3a3e43 Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Tue, 2 Sep 2025 12:34:56 -0700 Subject: [PATCH 3/5] Declare support for Python 3.13 --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 10e8be55..57fce61f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,6 +24,7 @@ classifiers = Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 + Programming Language :: Python :: 3.13 License :: OSI Approved :: MIT License Operating System :: OS Independent From a59bd09279d3d2c03ed45776c41ace1993f12bb9 Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Wed, 17 Sep 2025 12:34:56 -0700 Subject: [PATCH 4/5] Bumping cryptography which also drops Python 3.7 --- .github/workflows/python-package.yml | 2 +- setup.cfg | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 8ed0073c..98d704d4 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -28,7 +28,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 diff --git a/setup.cfg b/setup.cfg index 57fce61f..373524f0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -18,7 +18,6 @@ classifiers = Programming Language :: Python Programming Language :: Python :: 3 :: Only Programming Language :: Python :: 3 - Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 @@ -39,7 +38,7 @@ project_urls = include_package_data = False # We used to ship LICENSE, but our __init__.py already mentions MIT packages = find: # Our test pipeline currently still covers Py37 -python_requires = >=3.7 +python_requires = >=3.8 install_requires = requests>=2.0.0,<3 @@ -53,7 +52,7 @@ install_requires = # And we will use the cryptography (X+3).0.0 as the upper bound, # based on their latest deprecation policy # https://cryptography.io/en/latest/api-stability/#deprecation - cryptography>=2.5,<48 + cryptography>=2.5,<49 [options.extras_require] From 3edd99a1c1c01c356aff48c320ac9d07382409c5 Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Mon, 22 Sep 2025 15:53:10 -0700 Subject: [PATCH 5/5] 1.34.0b1 + minor changes = 1.34.0 --- msal/sku.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msal/sku.py b/msal/sku.py index 9b871873..3069da43 100644 --- a/msal/sku.py +++ b/msal/sku.py @@ -2,5 +2,5 @@ """ # The __init__.py will import this. Not the other way around. -__version__ = "1.34.0b1" +__version__ = "1.34.0" SKU = "MSAL.Python"