From feff02a14fd983638404577ac918b7a7b043e131 Mon Sep 17 00:00:00 2001 From: Sajid Ali Date: Tue, 30 Jun 2026 13:39:26 -0400 Subject: [PATCH 1/2] httpx2 in keycloak plugin --- .../keycloak_user_search/keycloak_config.py | 2 +- .../plugins/keycloak_user_search/search.py | 6 +-- pyproject.toml | 2 +- uv.lock | 42 ++++++++++++++++++- 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/coldfront/plugins/keycloak_user_search/keycloak_config.py b/coldfront/plugins/keycloak_user_search/keycloak_config.py index fcf5d33bd4..bf47e39f5f 100644 --- a/coldfront/plugins/keycloak_user_search/keycloak_config.py +++ b/coldfront/plugins/keycloak_user_search/keycloak_config.py @@ -1,6 +1,6 @@ from dataclasses import dataclass from coldfront.core.utils.common import import_from_settings -from httpx import URL +from httpx2 import URL @dataclass diff --git a/coldfront/plugins/keycloak_user_search/search.py b/coldfront/plugins/keycloak_user_search/search.py index 530fdb8e2e..e60e1cc7ae 100644 --- a/coldfront/plugins/keycloak_user_search/search.py +++ b/coldfront/plugins/keycloak_user_search/search.py @@ -1,7 +1,7 @@ from coldfront.core.user.utils import UserSearch from coldfront.plugins.keycloak_user_search.keycloak_config import KeycloakClientConfig import logging -from httpx import Client, URL, Headers +from httpx2 import Client, URL, Headers logger = logging.getLogger(__name__) @@ -45,9 +45,7 @@ def get_username_matches(self, input_str: str) -> list[dict]: "Authorization": f"Bearer {self.token}", } ) - search_url = self.config.base_url.join( - self.config.search_username_path + input_str - ) + search_url = self.config.base_url.join(self.config.search_username_path + input_str) result = self.client.get(search_url, headers=headers).raise_for_status().json() return result diff --git a/pyproject.toml b/pyproject.toml index c2bcceda99..b79dc50f66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ dependencies = [ "djangorestframework>=3.16.1", "doi2bib>=0.4.0", "formencode>=2.1.1", - "httpx>=0.28.1", + "httpx2>=2.5.0", "humanize>=4.11.0", "plotly[express]>=6.2.0", "python-dateutil>=2.9.0", diff --git a/uv.lock b/uv.lock index bbdb02779a..c1215bc2ee 100644 --- a/uv.lock +++ b/uv.lock @@ -253,7 +253,7 @@ dependencies = [ { name = "djangorestframework" }, { name = "doi2bib" }, { name = "formencode" }, - { name = "httpx" }, + { name = "httpx2" }, { name = "humanize" }, { name = "plotly", extra = ["express"] }, { name = "python-dateutil" }, @@ -308,7 +308,7 @@ requires-dist = [ { name = "doi2bib", specifier = ">=0.4.0" }, { name = "formencode", specifier = ">=2.1.1" }, { name = "gunicorn", marker = "extra == 'prod'", specifier = "==23.0.0" }, - { name = "httpx", specifier = ">=0.28.1" }, + { name = "httpx2", specifier = ">=2.5.0" }, { name = "humanize", specifier = ">=4.11.0" }, { name = "mozilla-django-oidc", marker = "extra == 'prod'", specifier = ">=4.0.1" }, { name = "plotly", extras = ["express"], specifier = ">=6.2.0" }, @@ -766,6 +766,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, ] +[[package]] +name = "httpcore2" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h11" }, + { name = "truststore" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/06/5c12df521b5322fb1114a83d46911b2fbcb8855ddb3a635f11c01a214af5/httpcore2-2.5.0.tar.gz", hash = "sha256:88aa170137c17328d5ac44234f9fd10706466d5fb347f3edac4d39b91137b09d", size = 64808, upload-time = "2026-06-25T14:16:56.472Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/a1/7564199d1a8728fe737b0a72e5b3f8d92dfe085a74ddf7cdd83bce5f206d/httpcore2-2.5.0-py3-none-any.whl", hash = "sha256:5ce35188de461d31e8d000bfb8ef8bf22c6c16587a211e5571deaa5e9bdf842a", size = 80330, upload-time = "2026-06-25T14:16:53.634Z" }, +] + [[package]] name = "httpx" version = "0.28.1" @@ -781,6 +794,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] +[[package]] +name = "httpx2" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "httpcore2" }, + { name = "idna" }, + { name = "truststore" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d0/e2/b5dedc0cf35aa65de5f541ccd30d2bc1fd7f1d43c9ab09f8ed9a7342317b/httpx2-2.5.0.tar.gz", hash = "sha256:e2df9cb4611021527ff8a675b1c320b610a2ec397acc8d6fe6e91df2d9b33c29", size = 83121, upload-time = "2026-06-25T14:16:57.491Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/22/859d8252dad9bc9adee34b52e62cde621ece07b042ccb2ab4da1be46695f/httpx2-2.5.0-py3-none-any.whl", hash = "sha256:3d2d4d9cf4b61f1a1f46a95947cfdb47e80cb56a2f91c6256ac8f58e4891df41", size = 76652, upload-time = "2026-06-25T14:16:55.23Z" }, +] + [[package]] name = "humanize" version = "4.15.0" @@ -1482,6 +1511,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/f0/3fe8c6e69135a845f4106f2ff8b6805638d4e85c264e70114e8126689587/tokenize_rt-6.2.0-py2.py3-none-any.whl", hash = "sha256:a152bf4f249c847a66497a4a95f63376ed68ac6abf092a2f7cfb29d044ecff44", size = 6004, upload-time = "2025-05-23T23:47:58.812Z" }, ] +[[package]] +name = "truststore" +version = "0.10.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/a3/1585216310e344e8102c22482f6060c7a6ea0322b63e026372e6dcefcfd6/truststore-0.10.4.tar.gz", hash = "sha256:9d91bd436463ad5e4ee4aba766628dd6cd7010cf3e2461756b3303710eebc301", size = 26169, upload-time = "2025-08-12T18:49:02.73Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl", hash = "sha256:adaeaecf1cbb5f4de3b1959b42d41f6fab57b2b1666adb59e89cb0b53361d981", size = 18660, upload-time = "2025-08-12T18:49:01.46Z" }, +] + [[package]] name = "types-django-filter" version = "25.2.0.20260508" From 7431ff66bbbf0895d1ed5ae2f57752e8adcc7a63 Mon Sep 17 00:00:00 2001 From: Sajid Ali Date: Tue, 30 Jun 2026 13:45:58 -0400 Subject: [PATCH 2/2] slurm rest api client bump --- uv.lock | 32 ++------------------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/uv.lock b/uv.lock index c1215bc2ee..5001929811 100644 --- a/uv.lock +++ b/uv.lock @@ -753,19 +753,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] -[[package]] -name = "httpcore" -version = "1.0.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, -] - [[package]] name = "httpcore2" version = "2.5.0" @@ -779,21 +766,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c9/a1/7564199d1a8728fe737b0a72e5b3f8d92dfe085a74ddf7cdd83bce5f206d/httpcore2-2.5.0-py3-none-any.whl", hash = "sha256:5ce35188de461d31e8d000bfb8ef8bf22c6c16587a211e5571deaa5e9bdf842a", size = 80330, upload-time = "2026-06-25T14:16:53.634Z" }, ] -[[package]] -name = "httpx" -version = "0.28.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "certifi" }, - { name = "httpcore" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, -] - [[package]] name = "httpx2" version = "2.5.0" @@ -1478,10 +1450,10 @@ wheels = [ [[package]] name = "slurm-rest-api-client" version = "0.0.1" -source = { git = "https://github.com/NYU-RTS/rts-slurm-python-sdk#315877e9def6fe6cd779160154755fedb38d3201" } +source = { git = "https://github.com/NYU-RTS/rts-slurm-python-sdk#d8a9597877ea85e01807e6e77c0006770f6698dd" } dependencies = [ { name = "attrs" }, - { name = "httpx" }, + { name = "httpx2" }, ] [[package]]