Repository: StackStorm/st2 (language: python)

Issue:
[WIP] Interoperability updates for py3.8, py3.9 and py3.10
This branch started as an exploration for upgrading mongoengine/pymongo but has evolved into aligning module dependencies and fixing code related to updating module versions to support py3.8, py3.9 and py3.10.


Discussion / hints:
Currently attempting to get tests passing with pymongo 3.13 to display deprecation warns for python3.8 to python3.10.
`nose` is blocking python3.10 (Will attempt to run tests with pytest)
`oslo.config` is blocking python3.10 (Upgraded to latest, but behavioural changes break string output.  Further investigation required.)
`prompt-toolkit-1.0.15` is blocking py3.10 support.  `3.0.21` added python 3.10 support.  There is no backwards compatibility.
TODO: check after fixing prompt-toolkit as prance bump has probably broken open-api tests.
@amanda11 @cognifloyd I've requested a review of what I've done so far because my initial objective was to get unit tests passing for py3.8/3.9 and 3.10 so I could increment pymongo to see deprecation warnings and adjust the code.  Turns out the unit tests have found rot all through the 3rd party modules.  Some of which are abandoned and don't provide py3.10 support so I've had to switch them out with actively maintained equivalents.   I've repaired a lot of low hanging fruit warnings/errors, but this PR is starting to get quite large and I'm concerned about merge conflicts if it drags on too long.   Do you have any recommendations as to how this would be best handled?
@nzlosh - is it possible to do a branch with some of the dependencies updated so that it passes on python3.8 only but with whatever UTs changes are needed. Might make it smaller, but if not then I guess keep going.
Thanks for the feedback @amanda11, it's a good idea but the problem is everything is so interdependent that I think I'd end up spending more time trying to untangle the mess to get it working just for py3.8 that it'd be counter productive.  I'll keep pushing forward on this PR and see if I can't stabilise the tests.

Fix patch:
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index d2a8a4939f..fd3b485148 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -13,13 +13,14 @@ Fixed
 Changed
 ~~~~~~~
 * Bumped `jsonschema` 2.6.0 -> 3.2.0 now that python3.6 is not supported. #6118
+* Bumped many deps based on the lockfile generated by pants+pex. #6181 (by @cognifloyd and @nzlosh)
 
 Added
 ~~~~~
 * Continue introducing `pants <https://www.pantsbuild.org/docs>`_ to improve DX (Developer Experience)
   working on StackStorm, improve our security posture, and improve CI reliability thanks in part
   to pants' use of PEX lockfiles. This is not a user-facing addition.
-  #6118 #6141 #6133 #6120
+  #6118 #6141 #6133 #6120 #6181
   Contributed by @cognifloyd
 * Build of ST2 EL9 packages #6153
   Contributed by @amanda11
diff --git a/Makefile b/Makefile
index d13788b1ad..d45ac31bcc 100644
--- a/Makefile
+++ b/Makefile
@@ -55,8 +55,8 @@ REQUIREMENTS := test-requirements.txt requirements.txt
 
 # Pin common pip version here across all the targets
 # Note! Periodic maintenance pip upgrades are required to be up-to-date with the latest pip security fixes and updates
-PIP_VERSION ?= 20.3.3
-SETUPTOOLS_VERSION ?= 51.3.3
+PIP_VERSION ?= 24.0
+SETUPTOOLS_VERSION ?= 69.2.0
 PIP_OPTIONS := $(ST2_PIP_OPTIONS)
 
 ifndef PYLINT_CONCURRENCY
@@ -735,8 +735,8 @@ check-dependency-conflicts:
 	@echo
 	# Verify there are no conflicting dependencies
 	cat st2*/requirements.txt contrib/runners/*/requirements.txt | sort -u > req.txt && \
-	$(VIRTUALENV_DIR)/bin/pip-compile req.txt || exit 1; \
-	if [[ -e req.txt ]]; then rm req.txt; fi
+	$(VIRTUALENV_DIR)/bin/pip-compile --strip-extras --output-file req.out req.txt || exit 1; \
+	rm -f req.txt req.out
 
 .PHONY: virtualenv
 	# Note: We always want to update virtualenv/bin/activate file to make sure
@@ -1147,7 +1147,7 @@ ci-checks: .generated-files-check .shellcheck .black-check .pre-commit-checks .f
 	@echo
 	@echo "==================== rst-check ===================="
 	@echo
-	. $(VIRTUALENV_DIR)/bin/activate; rstcheck --report warning CHANGELOG.rst
+	. $(VIRTUALENV_DIR)/bin/activate; rstcheck --report-level WARNING CHANGELOG.rst
 
 .PHONY: .generated-files-check
 .generated-files-check:
diff --git a/contrib/runners/winrm_runner/requirements.txt b/contrib/runners/winrm_runner/requirements.txt
index 8856d42bc9..8927e31faf 100644
--- a/contrib/runners/winrm_runner/requirements.txt
+++ b/contrib/runners/winrm_runner/requirements.txt
@@ -5,4 +5,4 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-pywinrm==0.4.1
+pywinrm==0.4.3
diff --git a/fixed-requirements.txt b/fixed-requirements.txt
index 389105c72f..c9d7269748 100644
--- a/fixed-requirements.txt
+++ b/fixed-requirements.txt
@@ -1,91 +1,85 @@
 # Packages versions fixed for the whole st2 stack
 # Note: amqp is used by kombu
-amqp==5.0.6
-apscheduler==3.7.0
-# requests 2.23 requires chardet < 3.1.0
-chardet<3.1.0
-cffi<1.15.0
+amqp==5.2.0
+apscheduler==3.10.4
+chardet==3.0.4
+cffi==1.16.0
 # NOTE: 2.0 version breaks pymongo work with hosts
-dnspython>=1.16.0,<2.0.0
-cryptography==39.0.1
-# Note: 0.20.0 removed select.poll() on which some of our code and libraries we
-# depend on rely
-eventlet==0.33.3
+dnspython==1.16.0
+cryptography==42.0.5
+eventlet==0.36.1
 flex==6.14.1
 # Note: installs gitpython==3.1.37 (security fixed) under py3.8 and gitpython==3.1.18 (latest available, vulnerable) under py3.6
 # TODO: Pin to 3.1.37 or higher after dropping python3.6 support
-gitpython<=3.1.37
+gitpython==3.1.43
 # Needed by gitpython, old versions used to bundle it
-gitdb==4.0.2
+gitdb==4.0.11
 # Note: greenlet is used by eventlet
-greenlet==1.0.0
+greenlet==3.0.3
 gunicorn==21.2.0
 jsonpath-rw==1.4.0
 jsonschema==3.2.0
-kombu==5.0.2
+kombu==5.3.6
 lockfile==0.12.2
 # Fix MarkupSafe to < 2.1.0 as 2.1.0 removes soft_unicode
 # >=0.23 was from jinja2
-MarkupSafe<2.1.0,>=0.23
-mongoengine==0.23.0
+MarkupSafe==2.0.1
+mongoengine==0.23.1
 # required by orquesta (networkx<2.6 for py3.6, networkx<3 for py3.8)
-networkx<3
-# networkx requires decorator>=4.3,<5 which should resolve to version 4.4.2
-# but the wheel on pypi does not say it supports python3.8, so pip gets
-# confused. For now, pin decorator to work around pip's confusion.
-decorator==4.4.2
+networkx==2.8.8
+# networkx dropped its dep on decorator in version 2.6, so the old pin is unneeded.
+# now jsonpath-rw is the only thing that depends on decorator (a transitive dep)
+decorator==5.1.1
 # NOTE: Recent version substantially affect the performance and add big import time overhead
 # See https://github.com/StackStorm/st2/issues/4160#issuecomment-394386433 for details
-oslo.config>=1.12.1,<1.13
-oslo.utils<5.0,>=4.0.0
+oslo.config==1.12.1
+oslo.utils==7.1.0
 # paramiko 2.11.0 is needed by cryptography > 37.0.0
-paramiko==2.11.0
+paramiko==3.4.0
 passlib==1.7.4
-prompt-toolkit==1.0.15
+# For st2client: prompt-toolkit v2+ does not have prompt_toolkit.token.Token
+prompt-toolkit==1.0.18
 pyinotify==0.9.6 ; platform_system=="Linux"
-pymongo==3.11.3
-pyparsing<3
-zstandard==0.15.2
+pymongo==3.12.3
+pyparsing==3.1.2
+zstandard==0.22.0
 # pyOpenSSL 23.1.0 supports cryptography up to 40.0.x
-pyOpenSSL==23.1.0
+#pyOpenSSL==23.1.0
 python-editor==1.0.4
 python-keyczar==0.716
-pytz==2021.1
-pywinrm==0.4.1
-pyyaml==5.4.1
-redis==4.1.4
-requests[security]==2.25.1
-retrying==1.3.3
-routes==2.4.1
-semver==2.13.0
-six==1.13.0
-argparse==1.12.2
-# Note: argcomplete 1.12.3 supports importlib-metadata<5
-argcomplete==1.12.3
-prettytable==2.1.0
-# Note: installs importlib-metadata==4.10.1 (security fixed) under py3.8 and importlib-metadata==4.8.3 (latest available, vulnerable) under py3.6
-# TODO: Pin to 4.10.1 or higher after dropping python3.6 support
-importlib-metadata>=4.8.3,<=4.10.1
-# importlib-metadata requires typing-extensions but v4.2.0 requires py3.7+
-typing-extensions<4.2
+pytz==2024.1
+pywinrm==0.4.3
+pyyaml==6.0.1
+redis==5.0.3
+requests==2.31.0
+retrying==1.3.4
+routes==2.5.1
+semver==3.0.2
+six==1.16.0
+argparse==1.4.0
+argcomplete==3.2.3
+prettytable==3.10.0
+importlib-metadata==7.1.0
+typing-extensions==4.11.0
 # NOTE: sseclient has various issues which sometimes hang the connection for a long time, etc.
-sseclient-py==1.7
-stevedore==1.30.1
-tenacity>=3.2.1,<7.0.0
-tooz==2.8.0
+sseclient-py==1.8.0
+stevedore==5.2.0
+tenacity==8.2.3
+tooz==6.1.0
 # Note: virtualenv embeds wheels for pip, wheel, and setuptools. So pinning virtualenv pins those as well.
-# virtualenv==20.4.0 (<21) has pip==20.3.3 wheel==0.36.2 setuptools==51.3.3
-virtualenv==20.4.0
+# virtualenv==20.25.1 (<21) has pip==24.0 wheel==0.42.0 setuptools==68.0.0 and 69.1.0
+# lockfiles/st2.lock has pip==24.0 wheel==0.43.0 setuptools==69.2.0
+virtualenv==20.25.1
 webob==1.8.7
 zake==0.2.2
 # test requirements below
-bcrypt==3.2.0
-jinja2==2.11.3
-mock==4.0.3
+bcrypt==4.1.2
+jinja2==3.1.3
+mock==5.1.0
 nose-timer==1.0.1
 nose-parallel==0.4.0
-psutil==5.8.0
-python-dateutil==2.8.1
+psutil==5.9.8
+python-dateutil==2.9.0
 python-statsd==2.1.0
-orjson==3.5.2
-zipp<3.16.0
+orjson==3.10.0
+zipp==3.18.1
diff --git a/lockfiles/st2-constraints.txt b/lockfiles/st2-constraints.txt
index 168f81f6de..3f5bfdc03e 100644
--- a/lockfiles/st2-constraints.txt
+++ b/lockfiles/st2-constraints.txt
@@ -24,21 +24,26 @@ MarkupSafe<2.1.0,>=0.23
 
 # REQUIRED BY: kombu
 # REASON: unknown -- this looks like a lockfile-style pin
+#         kombu 5.0.2 requires amqp>=5.0.0,<6.0.0
+#         kombu 5.1.0 requires amqp>=5.0.6,<6.0.0
+#         kombu 5.2.3 requires amqp>=5.0.9,<6.0.0
+#         kombu 5.3.0 requires amqp>=5.1.1,<6.0.0
 # NOTE: try to remove constraint later.
-# DROPS RESOLVED VERSION: 5.1.1
-amqp==5.0.6
+# DROPS RESOLVED VERSION: 5.1.1 or 5.2.0
+#amqp==5.0.6
 
 # REQUIRED BY: cryptography, paramiko, passlib
 # REASON: unknown -- this looks like a lockfile-style pin
+#         bcrypt 4 is a rewrite in rust and wheels are manylinux2014 instead of manylinux2010
 # NOTE: try to remove constraint later.
 # DROPS RESOLVED VERSION: 4.0.1
-bcrypt==3.2.0
+#bcrypt==3.2.0
 
 # REQUIRED BY: bcrypt, cryptography, pynacl, zstandard
 # REASON: unknown
 # NOTE: try to remove constraint later.
 # DROPS RESOLVED VERSION: 1.15.1
-cffi<1.15.0
+#cffi<1.15.0
 
 # REQUIRED BY: orquesta, prance, requests
 # REASON: requests 2.23 requires chardet < 3.1.0
@@ -52,6 +57,8 @@ cffi<1.15.0
 #     but the wheel on pypi does not say it supports python3.8, so pip gets
 #     confused. For now, pin decorator to work around pip's confusion.
 # NOTE: Since pants/pex use a newer version of pip, this is not an issue.
+#       Also, networkx dropped its dependency on decorator in v2.6, and we're
+#       using 2.8, so this constraint is pointless now.
 # DROPS RESOLVED VERSION: 4.4.2
 #decorator==4.4.2
 
@@ -62,9 +69,10 @@ cffi<1.15.0
 dnspython>=1.16.0,<2.0.0
 
 # REQUIRED BY: eventlet
-# REASON: unknown -- this looks like a lockfile-style pin
-# NOTE: We are having a hard time upgrading eventlet, so this pin is commented
-#       out to see if that will help. If any tests fail, uncomment this.
+# REASON: eventlet is difficult to upgrade.
+#         greenlet 2 adds py3.11 support, platform compat changes, and better error checking
+#         greenlet 3 adds py3.12 support, drops py3.6 support, fixes various crash conditions
+# NOTE: If constrained, bump carefully. Tests seem to be passing without this constraint.
 # DROPS RESOLVED VERSION: 1.1.3.post0
 #greenlet==1.0.0
 
@@ -81,13 +89,13 @@ dnspython>=1.16.0,<2.0.0
 # REASON: unknown
 # NOTE: try to remove constraint later.
 # DROPS RESOLVED VERSION: 4.13
-oslo.utils<5.0,>=4.0.0
+#oslo.utils<5.0,>=4.0.0
 
 # REQUIRED BY: tooz
 # REASON: unknown
 # NOTE: try to remove constraint later.
 # DROPS RESOLVED VERSION: 8.1
-tenacity>=3.2.1,<7.0.0
+#tenacity>=3.2.1,<7.0.0
 
 # REQUIRED BY: st2-auth-backend-flat-file
 # REASON: unknown -- this looks like a lockfile-style pin
@@ -111,4 +119,4 @@ tenacity>=3.2.1,<7.0.0
 # REASON: importlib-metadata requires typing-extensions but v4.2.0 requires py3.7+
 # NOTE: try to remove constraint later.
 # DROPS RESOLVED VERSION: 4.1.1
-typing-extensions<4.2
+#typing-extensions<4.2
diff --git a/lockfiles/st2.lock b/lockfiles/st2.lock
index d3a837580a..5f1c48ea8e 100644
--- a/lockfiles/st2.lock
+++ b/lockfiles/st2.lock
@@ -16,7 +16,7 @@
 //     "beautifulsoup4",
 //     "ciso8601",
 //     "cryptography",
-//     "eventlet<0.31",
+//     "eventlet",
 //     "flask",
 //     "flex",
 //     "gitdb",
@@ -60,7 +60,7 @@
 //     "pywinrm",
 //     "redis",
 //     "rednose",
-//     "requests[security]",
+//     "requests",
 //     "retrying",
 //     "routes",
 //     "semver",
@@ -71,7 +71,7 @@
 //     "st2-auth-backend-flat-file@ git+https://github.com/StackStorm/st2-auth-backend-flat-file.git@master",
 //     "st2-auth-ldap@ git+https://github.com/StackStorm/st2-auth-ldap.git@master",
 //     "st2-rbac-backend@ git+https://github.com/StackStorm/st2-rbac-backend.git@master",
-//     "stevedore<3",
+//     "stevedore",
 //     "tabulate",
 //     "tooz",
 //     "udatetime",
@@ -87,13 +87,7 @@
 //   "manylinux": "manylinux2014",
 //   "requirement_constraints": [
 //     "MarkupSafe<2.1.0,>=0.23",
-//     "amqp==5.0.6",
-//     "bcrypt==3.2.0",
-//     "cffi<1.15.0",
-//     "dnspython<2.0.0,>=1.16.0",
-//     "oslo.utils<5.0,>=4.0.0",
-//     "tenacity<7.0.0,>=3.2.1",
-//     "typing-extensions<4.2"
+//     "dnspython<2.0.0,>=1.16.0"
 //   ],
 //   "only_binary": [],
 //   "no_binary": []
@@ -107,13 +101,7 @@
   "build_isolation": true,
   "constraints": [
     "MarkupSafe<2.1.0,>=0.23",
-    "amqp==5.0.6",
-    "bcrypt==3.2.0",
-    "cffi<1.15.0",
-    "dnspython<2.0.0,>=1.16.0",
-    "oslo.utils<5.0,>=4.0.0",
-    "tenacity<7.0.0,>=3.2.1",
-    "typing-extensions<4.2"
+    "dnspython<2.0.0,>=1.16.0"
   ],
   "locked_resolves": [
     {
@@ -122,21 +110,21 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "493a2ac6788ce270a2f6a765b017299f60c1998f5a8617908ee9be082f7300fb",
-              "url": "https://files.pythonhosted.org/packages/80/f1/cd7626c763e58f967317023c3dd01a2fab5d6f00f8e1c672ccceb3aae5cb/amqp-5.0.6-py3-none-any.whl"
+              "hash": "827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637",
+              "url": "https://files.pythonhosted.org/packages/b3/f0/8e5be5d5e0653d9e1d02b1144efa33ff7d2963dfad07049e02c0fa9b2e8d/amqp-5.2.0-py3-none-any.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "03e16e94f2b34c31f8bf1206d8ddd3ccaa4c315f7f6a1879b7b1210d229568c2",
-              "url": "https://files.pythonhosted.org/packages/dd/a8/b00824f9be6eb4e15f565a82731c39962d71ba6e692659d22b61991b884a/amqp-5.0.6.tar.gz"
+              "hash": "a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd",
+              "url": "https://files.pythonhosted.org/packages/32/2c/6eb09fbdeb3c060b37bd33f8873832897a83e7a428afe01aad333fc405ec/amqp-5.2.0.tar.gz"
             }
           ],
           "project_name": "amqp",
           "requires_dists": [
-            "vine==5.0.0"
+            "vine<6.0.0,>=5.0.0"
           ],
           "requires_python": ">=3.6",
-          "version": "5.0.6"
+          "version": "5.2.0"
         },
         {
           "artifacts": [
@@ -313,54 +301,117 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "56e5da069a76470679f312a7d3d23deb3ac4519991a0361abc11da837087b61d",
-              "url": "https://files.pythonhosted.org/packages/66/23/f0e4f9f37c00bbebb9014e3daaa8ca40561fef4a3dc12aee3643248c4208/bcrypt-3.2.0-cp36-abi3-musllinux_1_1_x86_64.whl"
+              "hash": "ba4e4cc26610581a6329b3937e02d319f5ad4b85b074846bf4fef8a8cf51e7bb",
+              "url": "https://files.pythonhosted.org/packages/d6/59/831b66ba317496332d4e9e1a33bcdd14922d6cfecc411dc315a229b67127/bcrypt-4.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1",
-              "url": "https://files.pythonhosted.org/packages/26/70/6d218afbe4c73538053c1016dd631e8f25fffc10cd01f5c272d7acf3c03d/bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl"
+              "hash": "e51c42750b7585cee7892c2614be0d14107fad9581d1738d954a262556dd1aab",
+              "url": "https://files.pythonhosted.org/packages/01/0c/7ffee251454a198d387f4a197a03a12c9f5322e4082cb4915e8df8c04eff/bcrypt-4.1.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7",
-              "url": "https://files.pythonhosted.org/packages/52/a7/51ab6481ac355517696477889d8ab232106a0ddadda642c54e47a2ab40b9/bcrypt-3.2.0-cp36-abi3-manylinux1_x86_64.whl"
+              "hash": "ba55e40de38a24e2d78d34c2d36d6e864f93e0d79d0b6ce915e4335aa81d01b1",
+              "url": "https://files.pythonhosted.org/packages/05/76/6232380b99d85a2154ae06966b4bf6ce805878a7a92c3211295063b0b6be/bcrypt-4.1.2-cp39-abi3-musllinux_1_1_aarch64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "b589229207630484aefe5899122fb938a5b017b0f4349f769b8c13e78d99a8fd",
-              "url": "https://files.pythonhosted.org/packages/6d/41/9c68492335dc668066a420b1fb1809f24b933e74807142f9e2dd38dafe4b/bcrypt-3.2.0-cp36-abi3-macosx_10_10_universal2.whl"
+              "hash": "1c28973decf4e0e69cee78c68e30a523be441972c826703bb93099868a8ff5b5",
+              "url": "https://files.pythonhosted.org/packages/21/d9/7924b194b3aa9bcc39f4592470995841efe71015cb8a79abae9bb043ec28/bcrypt-4.1.2-cp37-abi3-musllinux_1_2_aarch64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d",
-              "url": "https://files.pythonhosted.org/packages/b5/96/a2819de4faae6b6339a398ab1354770bf8fa532a5e0df0e2f08481fdb670/bcrypt-3.2.0-cp36-abi3-manylinux2014_aarch64.whl"
+              "hash": "ea505c97a5c465ab8c3ba75c0805a102ce526695cd6818c6de3b1a38f6f60da1",
+              "url": "https://files.pythonhosted.org/packages/22/2e/32c1810b8470aca98c33892fc8c559c1be95eba711cb1bb82fbbf2a4752a/bcrypt-4.1.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6",
-              "url": "https://files.pythonhosted.org/packages/bf/6a/0afb1e04aebd4c3ceae630a87a55fbfbbd94dea4eaf01e53d36743c85f02/bcrypt-3.2.0-cp36-abi3-macosx_10_9_x86_64.whl"
+              "hash": "57fa9442758da926ed33a91644649d3e340a71e2d0a5a8de064fb621fd5a3326",
+              "url": "https://files.pythonhosted.org/packages/41/ed/e446078ebe94d8ccac7170ff4bab83d8c86458c6fcfc7c5a4b449974fdd6/bcrypt-4.1.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "a0584a92329210fcd75eb8a3250c5a941633f8bfaf2a18f81009b097732839b7",
-              "url": "https://files.pythonhosted.org/packages/c0/75/323f3e9e051726cef8a1d71d340a208ed5fe9dbdebc13b83428355c1382e/bcrypt-3.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl"
+              "hash": "2a298db2a8ab20056120b45e86c00a0a5eb50ec4075b6142db35f593b97cb3fb",
+              "url": "https://files.pythonhosted.org/packages/42/9d/a88027b5a8752f4b1831d957470f48e23cebc112aaf762880f3adbfba9cf/bcrypt-4.1.2-cp39-abi3-manylinux_2_28_x86_64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29",
-              "url": "https://files.pythonhosted.org/packages/d8/ba/21c475ead997ee21502d30f76fd93ad8d5858d19a3fad7cd153de698c4dd/bcrypt-3.2.0.tar.gz"
+              "hash": "68e3c6642077b0c8092580c819c1684161262b2e30c4f45deb000c38947bf483",
+              "url": "https://files.pythonhosted.org/packages/42/c4/13c4bba7e25633b2e94724c642aa93ce376c476d80ecd50d73f0fe2eb38f/bcrypt-4.1.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "44290ccc827d3a24604f2c8bcd00d0da349e336e6503656cb8192133e27335e2",
+              "url": "https://files.pythonhosted.org/packages/54/fc/fd9a299d4dfd7da38b4570e487ea2465fb92021ab31a08bd66b3caba0baa/bcrypt-4.1.2-cp37-abi3-musllinux_1_1_aarch64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "732b3920a08eacf12f93e6b04ea276c489f1c8fb49344f564cca2adb663b3e4c",
+              "url": "https://files.pythonhosted.org/packages/5a/5b/dfcd8b7422a8f3b4ce3d28d64307e2f3502e3b5c540dde35eccda2d6c763/bcrypt-4.1.2-cp37-abi3-musllinux_1_1_x86_64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "eb3bd3321517916696233b5e0c67fd7d6281f0ef48e66812db35fc963a422a1c",
+              "url": "https://files.pythonhosted.org/packages/6d/7c/761ab4586beb7aa14b3fa2f382794746a218fffe1d22d9e10926200c8ccd/bcrypt-4.1.2-cp37-abi3-manylinux_2_28_aarch64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "33313a1200a3ae90b75587ceac502b048b840fc69e7f7a0905b5f87fac7a1258",
+              "url": "https://files.pythonhosted.org/packages/72/07/6a6f2047a9dc9d012b7b977e4041d37d078b76b44b7ee4daf331c1e6fb35/bcrypt-4.1.2.tar.gz"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "387e7e1af9a4dd636b9505a465032f2f5cb8e61ba1120e79a0e1cd0b512f3dfc",
+              "url": "https://files.pythonhosted.org/packages/72/3d/925adb5f5bef7616b504227a431fcaadd9630044802b5c81a31a560b4369/bcrypt-4.1.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "69057b9fc5093ea1ab00dd24ede891f3e5e65bee040395fb1e66ee196f9c9b4a",
+              "url": "https://files.pythonhosted.org/packages/85/23/756228cbc426049c264c86d163ec1b4fb1b06114f26b25fb63132af56126/bcrypt-4.1.2-cp39-abi3-musllinux_1_2_x86_64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "b90e216dc36864ae7132cb151ffe95155a37a14e0de3a8f64b49655dd959ff9c",
+              "url": "https://files.pythonhosted.org/packages/88/fd/6025f5530e6ac2513404aa2ab3fb935b9d992dbf24f255f03b5972dace74/bcrypt-4.1.2-cp39-abi3-musllinux_1_2_aarch64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "6cad43d8c63f34b26aef462b6f5e44fdcf9860b723d2453b5d391258c4c8e966",
+              "url": "https://files.pythonhosted.org/packages/91/21/6350647549656138a067788d67bdb5ee89ffc2f025618ebf60d3806274c4/bcrypt-4.1.2-cp37-abi3-manylinux_2_28_x86_64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "71b8be82bc46cedd61a9f4ccb6c1a493211d031415a34adde3669ee1b0afbb63",
+              "url": "https://files.pythonhosted.org/packages/a4/72/a1276d2fbf5d1af0e29ff9fb5220ce1d49a5f94ccbfb4f9141c963ff9d0e/bcrypt-4.1.2-cp39-abi3-macosx_10_12_universal2.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "3566a88234e8de2ccae31968127b0ecccbb4cddb629da744165db72b58d88ca4",
+              "url": "https://files.pythonhosted.org/packages/ac/c5/243674ec98288af9da31f5b137686746986d5d298dc520e243032160fd1b/bcrypt-4.1.2-cp39-abi3-musllinux_1_1_x86_64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "f70d9c61f9c4ca7d57f3bfe88a5ccf62546ffbadf3681bb1e268d9d2e41c91a7",
+              "url": "https://files.pythonhosted.org/packages/b6/1b/1c1cf4efe142dfe6fab912c16766d3eab65b87f33f1d13a08238afce5fdf/bcrypt-4.1.2-cp39-abi3-manylinux_2_28_aarch64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "b8df79979c5bae07f1db22dcc49cc5bccf08a0380ca5c6f391cbb5790355c0b0",
+              "url": "https://files.pythonhosted.org/packages/bf/26/ec53ccf5cadc81891d53cf0c117cff0f973d98cab6e9d6979578ca5aceeb/bcrypt-4.1.2-cp37-abi3-musllinux_1_2_x86_64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "ac621c093edb28200728a9cca214d7e838529e557027ef0581685909acd28b5e",
+              "url": "https://files.pythonhosted.org/packages/df/cc/5a73c2ecfa9f255423530e8aeaceb0590da12e4c83c99fdac17093f5ce42/bcrypt-4.1.2-cp37-abi3-macosx_10_12_universal2.whl"
             }
           ],
           "project_name": "bcrypt",
           "requires_dists": [
-            "cffi>=1.1",
             "mypy; extra == \"typecheck\"",
-            "pytest!=3.3.0,>=3.2.1; extra == \"tests\"",
-            "six>=1.4.1"
+            "pytest!=3.3.0,>=3.2.1; extra == \"tests\""
           ],
-          "requires_python": ">=3.6",
-          "version": "3.2.0"
+          "requires_python": ">=3.7",
+          "version": "4.1.2"
         },
         {
           "artifacts": [
@@ -427,76 +478,91 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87",
-              "url": "https://files.pythonhosted.org/packages/00/b8/a127ffae2de749e0c0e3e10fc76a4f110abae64dbeb4b89247dfb6de7cab/cffi-1.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl"
+              "hash": "8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe",
+              "url": "https://files.pythonhosted.org/packages/8c/54/82aa3c014760d5a6ddfde3253602f0ac1937dd504621d4139746f230a7b5/cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e",
-              "url": "https://files.pythonhosted.org/packages/1f/e3/33394dcef4264f5a20249bd9dbd9375743bc97291a264470e630fa01ddf9/cffi-1.14.6-cp38-cp38-manylinux1_i686.whl"
+              "hash": "b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2",
+              "url": "https://files.pythonhosted.org/packages/20/3b/f95e667064141843843df8ca79dd49ba57bb7a7615d6d7d538531e45f002/cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd",
-              "url": "https://files.pythonhosted.org/packages/2e/92/87bb61538d7e60da8a7ec247dc048f7671afe17016cd0008b3b710012804/cffi-1.14.6.tar.gz"
+              "hash": "748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000",
+              "url": "https://files.pythonhosted.org/packages/20/f8/5931cfb7a8cc15d224099cead5e5432efe729bd61abce72d9b3e51e5800b/cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd",
-              "url": "https://files.pythonhosted.org/packages/30/69/cb013027404d6508d53005038eacb09e707a9fec0cbbd893c79461acc35a/cffi-1.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl"
+              "hash": "dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872",
+              "url": "https://files.pythonhosted.org/packages/33/14/8398798ab001523f1abb2b4170a01bf2114588f3f1fa1f984b3f3bef107e/cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d",
-              "url": "https://files.pythonhosted.org/packages/54/39/cc4587c7c179a545a454c2252a64a8ab0d76b28f347e66caa825c7b36ae6/cffi-1.14.6-cp39-cp39-macosx_10_9_x86_64.whl"
+              "hash": "0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc",
+              "url": "https://files.pythonhosted.org/packages/39/44/4381b8d26e9cfa3e220e3c5386f443a10c6313a6ade7acb314b2bcc0a6ce/cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e",
-              "url": "https://files.pythonhosted.org/packages/6b/a9/c95f5cca87cdda74f544ecb7d9cdf3eb3eae883e210f3994677086528352/cffi-1.14.6-cp39-cp39-manylinux1_i686.whl"
+              "hash": "9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8",
+              "url": "https://files.pythonhosted.org/packages/50/bd/17a8f9ac569d328de304e7318d7707fcdb6f028bcc194d80cfc654902007/cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f",
-              "url": "https://files.pythonhosted.org/packages/79/bb/f05a6b0129ff445286e9ad76235eb479dae16917df7388ed549d3d99d136/cffi-1.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl"
+              "hash": "bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0",
+              "url": "https://files.pythonhosted.org/packages/68/ce/95b0bae7968c65473e1298efb042e10cafc7bafc14d9e4f154008241c91d/cffi-1.16.0.tar.gz"
             },
             {
               "algorithm": "sha256",
-              "hash": "9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346",
-              "url": "https://files.pythonhosted.org/packages/80/a8/1562ce87c8cb8c736cbef40bc235f4a2ac7835822c231f717e3064dfcc93/cffi-1.14.6-cp38-cp38-manylinux1_x86_64.whl"
+              "hash": "b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f",
+              "url": "https://files.pythonhosted.org/packages/69/46/8882b0405be4ac7db3fefa5a201f221acb54f27c76e584e23e9c62b68819/cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc",
-              "url": "https://files.pythonhosted.org/packages/91/ac/e0181c9402f5897be54bbddc87ca1c6ae4d2c562cfebc19959843d9ef438/cffi-1.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+              "hash": "a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0",
+              "url": "https://files.pythonhosted.org/packages/7f/5a/39e212f99aa73660a1c523f6b7ddeb4e26f906faaa5088e97b617a89c7ae/cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc",
-              "url": "https://files.pythonhosted.org/packages/a5/30/d0d23e56afef51ca18de6b7099cf8b595cb5e90c50cc3fa44d1fac68e405/cffi-1.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl"
+              "hash": "a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b",
+              "url": "https://files.pythonhosted.org/packages/85/3e/a4e4857c2aae635195459679ac9daea296630c1d76351259eb3de3c18ed0/cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c",
-              "url": "https://files.pythonhosted.org/packages/be/2a/6d266eea47dbb2d872bbd1b8954a2d167668481ff34ebb70ffdd1113eeab/cffi-1.14.6-cp39-cp39-manylinux1_x86_64.whl"
+              "hash": "e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b",
+              "url": "https://files.pythonhosted.org/packages/8b/5c/7f9cd1fb80512c9e16c90b29b26fea52977e9ab268321f64b42f4c8488a3/cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0",
-              "url": "https://files.pythonhosted.org/packages/ca/e1/015e2ae23230d9de8597e9ad8c0b81d5ac181f08f2e6e75774b7f5301677/cffi-1.14.6-cp38-cp38-macosx_10_9_x86_64.whl"
+              "hash": "582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed",
+              "url": "https://files.pythonhosted.org/packages/9d/da/e6dbf22b66899419e66c501ae5f1cf3d69979d4c75ad30da683f60abba94/cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202",
-              "url": "https://files.pythonhosted.org/packages/d9/0a/c441c3f0ecb791c0b6b67b5df841bb50c46d5a7d088895abe9322375e8e0/cffi-1.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+              "hash": "c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4",
+              "url": "https://files.pythonhosted.org/packages/ae/00/831d01e63288d1654ed3084a6ac8b0940de6dc0ada4ba71b830fff7a0088/cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098",
+              "url": "https://files.pythonhosted.org/packages/ea/ac/e9e77bc385729035143e54cc8c4785bd480eaca9df17565963556b0b7a93/cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324",
+              "url": "https://files.pythonhosted.org/packages/f1/c9/326611aa83e16b13b6db4dbb73b5455c668159a003c4c2f0c3bcb2ddabaf/cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c",
+              "url": "https://files.pythonhosted.org/packages/f9/6c/af5f40c66aac38aa70abfa6f26e8296947a79ef373cb81a14c791c3da91d/cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl"
             }
           ],
           "project_name": "cffi",
           "requires_dists": [
             "pycparser"
           ],
-          "requires_python": null,
-          "version": "1.14.6"
+          "requires_python": ">=3.8",
+          "version": "1.16.0"
         },
         {
           "artifacts": [
@@ -1012,24 +1078,30 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "c4e2c5452e54a267f5ce56092eeeed3d52d5c9319e545a796ab5ebbb5b2528ef",
-              "url": "https://files.pythonhosted.org/packages/ea/c6/9990551f52dcb9dd50ea87904e68ee61f20ec03de208d2bb0a0a5ab072a5/eventlet-0.30.3-py2.py3-none-any.whl"
+              "hash": "e42d0f73b718e654c223a033b8692d1a94d778a6c1deb6c3d21442746f3f727f",
+              "url": "https://files.pythonhosted.org/packages/75/af/73efcf654d8875febc6599f5a3d1eed043c1ca34a9b12950208cbf710d2a/eventlet-0.36.1-py3-none-any.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "a802caa725d6eb2d45a763c33f6bb5206e8d0566d5abc03638225379cf32476d",
-              "url": "https://files.pythonhosted.org/packages/d5/93/22be27621c6b017ac630f84b94ac8ac11231f7f03a6a0aec668365f823fe/eventlet-0.30.3.tar.gz"
+              "hash": "d227fe76a63d9e6a6cef53beb8ad0b2dc40a5e7737c801f4b474cfae1db07bc5",
+              "url": "https://files.pythonhosted.org/packages/1b/df/f441947eef23192c9f179e46868ee8510a6f7b6627b76b88f07692f9c706/eventlet-0.36.1.tar.gz"
             }
           ],
           "project_name": "eventlet",
           "requires_dists": [
-            "dnspython<2.0.0,>=1.15.0",
-            "greenlet>=0.3",
+            "black; extra == \"dev\"",
+            "build; extra == \"dev\"",
+            "commitizen; extra == \"dev\"",
+            "dnspython>=1.15.0",
+            "greenlet>=1.0",
+            "isort; extra == \"dev\"",
             "monotonic>=1.4; python_version < \"3.5\"",
-            "six>=1.10.0"
+            "pip-tools; extra == \"dev\"",
+            "pre-commit; extra == \"dev\"",
+            "twine; extra == \"dev\""
           ],
-          "requires_python": null,
-          "version": "0.30.3"
+          "requires_python": ">=3.7",
+          "version": "0.36.1"
         },
         {
           "artifacts": [
@@ -1073,13 +1145,13 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "5ffa845303983e7a0b7ae17636509bc97997d58afeafa72fb141a17b152284cb",
-              "url": "https://files.pythonhosted.org/packages/8b/69/acdf492db27dea7be5c63053230130e0574fd8a376de3555d5f8bbc3d3ad/filelock-3.13.3-py3-none-any.whl"
+              "hash": "404e5e9253aa60ad457cae1be07c0f0ca90a63931200a47d9b6a6af84fd7b45f",
+              "url": "https://files.pythonhosted.org/packages/6e/b5/15b3b36f298bcbc0be82a371ac744f4f5a10309ade0b8bbde286598dd612/filelock-3.13.4-py3-none-any.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "a79895a25bbefdf55d1a2a0a80968f7dbb28edcd6d4234a0afb3f37ecde4b546",
-              "url": "https://files.pythonhosted.org/packages/db/97/3f028f216da17ab0500550a6bb0f26bf39b07848348f63cce44b89829af9/filelock-3.13.3.tar.gz"
+              "hash": "d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4",
+              "url": "https://files.pythonhosted.org/packages/38/ff/877f1dbe369a2b9920e2ada3c9ab81cf6fe8fa2dce45f40cad510ef2df62/filelock-3.13.4.tar.gz"
             }
           ],
           "project_name": "filelock",
@@ -1097,7 +1169,7 @@
             "typing-extensions>=4.8; python_version < \"3.11\" and extra == \"typing\""
           ],
           "requires_python": ">=3.8",
-          "version": "3.13.3"
+          "version": "3.13.4"
         },
         {
           "artifacts": [
@@ -1647,41 +1719,43 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "d36f0cde6a18d9eb7b6b3aa62a59bfdff7f5724689850e447eca5be8efc9d501",
-              "url": "https://files.pythonhosted.org/packages/ce/71/3cba2d6bfc10f018654ee7c4bcbce273f2c1040323fc50ff464985327a0f/kombu-5.2.2-py3-none-any.whl"
+              "hash": "49f1e62b12369045de2662f62cc584e7df83481a513db83b01f87b5b9785e378",
+              "url": "https://files.pythonhosted.org/packages/78/e8/bade4ea794047c94bb267c08aad9d5270c803c18296e876b5d97bad28daf/kombu-5.3.6-py3-none-any.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "0f5d0763fb916808f617b886697b2be28e6bc35026f08e679697fc814b48a608",
-              "url": "https://files.pythonhosted.org/packages/8d/1f/d9c6395a2e1f38573712031187d0f46aa2d7b04afea539f540adc10b767f/kombu-5.2.2.tar.gz"
+              "hash": "f3da5b570a147a5da8280180aa80b03807283d63ea5081fcdb510d18242431d9",
+              "url": "https://files.pythonhosted.org/packages/3d/d9/86edccdc0f6868936deddf5892d6687481dcf047727f73214e61d31b2515/kombu-5.3.6.tar.gz"
             }
           ],
           "project_name": "kombu",
           "requires_dists": [
             "PyYAML>=3.10; extra == \"yaml\"",
-            "amqp<6.0.0,>=5.0.6",
-            "azure-servicebus>=7.0.0; extra == \"azureservicebus\"",
-            "azure-storage-queue; extra == \"azurestoragequeues\"",
-            "boto3>=1.9.12; extra == \"sqs\"",
-            "cached-property; python_version < \"3.8\"",
-            "importlib-metadata>=0.18; python_version < \"3.8\"",
-            "kazoo>=1.3.1; extra == \"zookeeper\"",
-            "librabbitmq>=2.0.0; extra == \"librabbitmq\"",
+            "amqp<6.0.0,>=5.1.1",
+            "azure-identity>=1.12.0; extra == \"azurestoragequeues\"",
+            "azure-servicebus>=7.10.0; extra == \"azureservicebus\"",
+            "azure-storage-queue>=12.6.0; extra == \"azurestoragequeues\"",
+            "backports.zoneinfo[tzdata]>=0.2.1; python_version < \"3.9\"",
+            "boto3>=1.26.143; extra == \"sqs\"",
+            "confluent-kafka>=2.2.0; extra == \"confluentkafka\"",
+            "kazoo>=2.8.0; extra == \"zookeeper\"",
+            "librabbitmq>=2.0.0; python_version < \"3.11\" and extra == \"librabbitmq\"",
             "msgpack; extra == \"msgpack\"",
-            "pycurl~=7.44.1; extra == \"sqs\"",
-            "pymongo<3.12.1,>=3.3.0; extra == \"mongodb\"",
+            "pycurl>=7.43.0.5; (sys_platform != \"win32\" and platform_python_implementation == \"CPython\") and extra == \"sqs\"",
+            "pymongo>=4.1.1; extra == \"mongodb\"",
             "pyro4; extra == \"pyro\"",
-            "python-consul>=0.6.0; extra == \"consul\"",
+            "python-consul2; extra == \"consul\"",
             "qpid-python>=0.26; extra == \"qpid\"",
             "qpid-tools>=0.26; extra == \"qpid\"",
-            "redis<4.0.0,>=3.4.1; extra == \"redis\"",
+            "redis!=4.5.5,!=5.0.2,>=4.5.2; extra == \"redis\"",
             "softlayer-messaging>=1.0.3; extra == \"slmq\"",
-            "sqlalchemy; extra == \"sqlalchemy\"",
-            "urllib3>=1.26.7; extra == \"sqs\"",
+            "sqlalchemy<2.1,>=1.4.48; extra == \"sqlalchemy\"",
+            "typing-extensions; python_version < \"3.10\"",
+            "urllib3>=1.26.16; extra == \"sqs\"",
             "vine"
           ],
-          "requires_python": ">=3.7",
-          "version": "5.2.2"
+          "requires_python": ">=3.8",
+          "version": "5.3.6"
         },
         {
           "artifacts": [
@@ -2403,29 +2477,30 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "dab26f205980a379fe7068dd4f9010809a2ae7dddcbecde53e18cf8fa4a251d9",
-              "url": "https://files.pythonhosted.org/packages/f9/6e/ecbe1ced0f5fdb009bb13f95f3e5ad19ac5f2e8911156d86216327cda636/oslo.utils-4.13.0-py3-none-any.whl"
+              "hash": "1d6504526c33cc10ae2c72565d0446a82d2acd43eaa5e6f3fd901d78400a2da0",
+              "url": "https://files.pythonhosted.org/packages/f0/bb/d61363eae3418f7862a2d14f96b803d5c395237a929e7fe35e5a1a4b0e23/oslo.utils-7.1.0-py3-none-any.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "45ba8aaa5ed056a8e8e46059ef93d5c2d7b9c99bc7480e361cf5783e47f28fba",
-              "url": "https://files.pythonhosted.org/packages/31/55/09032306dc483e05e1de6fda14a885e8814ca299a875287a253d367eb9b3/oslo.utils-4.13.0.tar.gz"
+              "hash": "5e42f3394d1f1f976e8994ac4a0918966d2f7eaf7c77380dd612c4a4148dd98e",
+              "url": "https://files.pythonhosted.org/packages/1d/82/a81644eea01b60fa3fa32e9d376dd2730da82161be8f68d8805c9f05ec23/oslo.utils-7.1.0.tar.gz"
             }
           ],
           "project_name": "oslo-utils",
           "requires_dists": [
+            "PyYAML>=3.13",
             "debtcollector>=1.2.0",
             "iso8601>=0.1.11",
             "netaddr>=0.7.18",
             "netifaces>=0.10.4",
             "oslo.i18n>=3.15.3",
             "packaging>=20.4",
-            "pbr!=2.1.0,>=2.0.0",
             "pyparsing>=2.1.0",
-            "pytz>=2013.6"
+            "pytz>=2013.6; python_version < \"3.9\"",
+            "tzdata>=2022.4; python_version >= \"3.9\""
           ],
-          "requires_python": ">=3.6",
-          "version": "4.13.0"
+          "requires_python": ">=3.8",
+          "version": "7.1.0"
         },
         {
           "artifacts": [
@@ -4036,21 +4111,21 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "c4724f8d7b8f6be42130663855d01a9c2414d6046055b5a65ab58a0e38637688",
-              "url": "https://files.pythonhosted.org/packages/45/62/aa4c77e0f0899b7697445d8126fd099473452488d70f877426812c2ce982/stevedore-2.0.1-py3-none-any.whl"
+              "hash": "1c15d95766ca0569cad14cb6272d4d31dae66b011a929d7c18219c176ea1b5c9",
+              "url": "https://files.pythonhosted.org/packages/eb/f1/c7c6205c367c764ee173537f7eaf070bba4dd0fa11bf081813c2f75285a3/stevedore-5.2.0-py3-none-any.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "609912b87df5ad338ff8e44d13eaad4f4170a65b79ae9cb0aa5632598994a1b7",
-              "url": "https://files.pythonhosted.org/packages/90/da/543bcd36658264100b58f0b6a9600c29dfe0c335a8efcc41678465b3fb4d/stevedore-2.0.1.tar.gz"
+              "hash": "46b93ca40e1114cea93d738a6c1e365396981bb6bb78c27045b7587c9473544d",
+              "url": "https://files.pythonhosted.org/packages/e7/c1/b210bf1071c96ecfcd24c2eeb4c828a2a24bf74b38af13896d02203b1eec/stevedore-5.2.0.tar.gz"
             }
           ],
           "project_name": "stevedore",
           "requires_dists": [
             "pbr!=2.1.0,>=2.0.0"
           ],
-          "requires_python": ">=3.6",
-          "version": "2.0.1"
+          "requires_python": ">=3.8",
+          "version": "5.2.0"
         },
         {
           "artifacts": [
@@ -4089,27 +4164,23 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "baed357d9f35ec64264d8a4bbf004c35058fad8795c5b0d8a7dc77ecdcbb8f39",
-              "url": "https://files.pythonhosted.org/packages/4e/e4/bcaf6978c0811fbb480acc9bd6e024b53390a61d153fa0be4f20a6c80d94/tenacity-6.3.1-py2.py3-none-any.whl"
+              "hash": "ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c",
+              "url": "https://files.pythonhosted.org/packages/f4/f1/990741d5bb2487d529d20a433210ffa136a367751e454214013b441c4575/tenacity-8.2.3-py3-none-any.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "e14d191fb0a309b563904bbc336582efe2037de437e543b38da749769b544d7f",
-              "url": "https://files.pythonhosted.org/packages/70/0c/47136795c8be87c7c30f28c9a56b59deb9550b2a1f5f3abb177daf5da1a3/tenacity-6.3.1.tar.gz"
+              "hash": "5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a",
+              "url": "https://files.pythonhosted.org/packages/89/3c/253e1627262373784bf9355db9d6f20d2d8831d79f91e9cca48050cddcc2/tenacity-8.2.3.tar.gz"
             }
           ],
           "project_name": "tenacity",
           "requires_dists": [
-            "futures>=3.0; python_version == \"2.7\"",
-            "monotonic>=0.6; python_version == \"2.7\"",
             "reno; extra == \"doc\"",
-            "six>=1.9.0",
             "sphinx; extra == \"doc\"",
-            "tornado>=4.5; extra == \"doc\"",
-            "typing>=3.7.4.1; python_version == \"2.7\""
+            "tornado>=4.5; extra == \"doc\""
           ],
-          "requires_python": null,
-          "version": "6.3.1"
+          "requires_python": ">=3.7",
+          "version": "8.2.3"
         },
         {
           "artifacts": [
@@ -4211,6 +4282,24 @@
           "requires_python": null,
           "version": "1.4.0"
         },
+        {
+          "artifacts": [
+            {
+              "algorithm": "sha256",
+              "hash": "c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a",
+              "url": "https://files.pythonhosted.org/packages/01/f3/936e209267d6ef7510322191003885de524fc48d1b43269810cd589ceaf5/typing_extensions-4.11.0-py3-none-any.whl"
+            },
+            {
+              "algorithm": "sha256",
+              "hash": "83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0",
+              "url": "https://files.pythonhosted.org/packages/f6/f3/b827b3ab53b4e3d8513914586dcca61c355fa2ce8252dea4da56e67bf8f2/typing_extensions-4.11.0.tar.gz"
+            }
+          ],
+          "project_name": "typing-extensions",
+          "requires_dists": [],
+          "requires_python": ">=3.8",
+          "version": "4.11.0"
+        },
         {
           "artifacts": [
             {
@@ -4459,19 +4548,19 @@
           "artifacts": [
             {
               "algorithm": "sha256",
-              "hash": "4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30",
-              "url": "https://files.pythonhosted.org/packages/8d/61/a7badb48186919a9fd7cf0ef427cab6d16e0ed474035c36fa64ddd72bfa2/vine-5.0.0-py2.py3-none-any.whl"
+              "hash": "40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc",
+              "url": "https://files.pythonhosted.org/packages/03/ff/7c0c86c43b3cbb927e0ccc0255cb4057ceba4799cd44ae95174ce8e8b5b2/vine-5.1.0-py3-none-any.whl"
             },
             {
               "algorithm": "sha256",
-              "hash": "7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e",
-              "url": "https://files.pythonhosted.org/packages/66/b2/8954108816865edf2b1e0d24f3c2c11dfd7232f795bcf1e4164fb8ee5e15/vine-5.0.0.tar.gz"
+              "hash": "8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0",
+              "url": "https://files.pythonhosted.org/packages/bd/e4/d07b5f29d283596b9727dd5275ccbceb63c44a1a82aa9e4bfd20426762ac/vine-5.1.0.tar.gz"
             }
           ],
           "project_name": "vine",
           "requires_dists": [],
           "requires_python": ">=3.6",
-          "version": "5.0.0"
+          "version": "5.1.0"
         },
         {
           "artifacts": [
@@ -4972,7 +5061,7 @@
     "beautifulsoup4",
     "ciso8601",
     "cryptography",
-    "eventlet<0.31",
+    "eventlet",
     "flask",
     "flex",
     "gitdb",
@@ -5016,7 +5105,7 @@
     "pywinrm",
     "redis",
     "rednose",
-    "requests[security]",
+    "requests",
     "retrying",
     "routes",
     "semver",
@@ -5027,7 +5116,7 @@
     "st2-auth-backend-flat-file",
     "st2-auth-ldap",
     "st2-rbac-backend",
-    "stevedore<3",
+    "stevedore",
     "tabulate",
     "tooz",
     "udatetime",
diff --git a/requirements-pants.txt b/requirements-pants.txt
index a418379142..b3ba068002 100644
--- a/requirements-pants.txt
+++ b/requirements-pants.txt
@@ -10,8 +10,7 @@ apscheduler
 argcomplete
 ciso8601
 cryptography
-# eventlet 0.31+ and gunicorn 20.1.0 are not compatible
-eventlet<0.31
+eventlet
 # flex parses the openapi 2 spec in our router
 flex
 # gitpython & gitdb are used for pack management
@@ -28,7 +27,6 @@ lockfile
 mock
 # mongoengine 0.24.0 has breaking changes to support pymongo 4.0
 mongoengine>=0.21.0,<0.24.0
-# Note: networkx v2.6 dropped support for Python3.6
 # networkx version is constrained in orquesta.
 networkx
 orjson
@@ -60,7 +58,7 @@ pytz
 PyYAML
 # RandomWords used in some tests
 RandomWords
-requests[security]
+requests
 retrying
 routes
 semver
@@ -71,8 +69,7 @@ six
 # NOTE: we use sseclient-py instead of sseclient because sseclient
 # has various issues which sometimes hang the connection for a long time, etc.
 sseclient-py
-# bandit doesn't work w/ stevedore 3+
-stevedore<3
+stevedore
 # For backward compatibility reasons, flat file backend is installed by default
 st2-auth-backend-flat-file @ git+https://github.com/StackStorm/st2-auth-backend-flat-file.git@master
 st2-auth-ldap @ git+https://github.com/StackStorm/st2-auth-ldap.git@master
diff --git a/requirements.txt b/requirements.txt
index c6ddc77374..dd534b4a95 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,78 +5,78 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-MarkupSafe<2.1.0,>=0.23
+MarkupSafe==2.0.1
 RandomWords
-amqp==5.0.6
-apscheduler==3.7.0
-argcomplete==1.12.3
-bcrypt==3.2.0
-cffi<1.15.0
-chardet<3.1.0
+amqp==5.2.0
+apscheduler==3.10.4
+argcomplete==3.2.3
+bcrypt==4.1.2
+cffi==1.16.0
+chardet==3.0.4
 ciso8601
-cryptography==39.0.1
-decorator==4.4.2
-dnspython>=1.16.0,<2.0.0
-eventlet==0.33.3
+cryptography==42.0.5
+decorator==5.1.1
+dnspython==1.16.0
+eventlet==0.36.1
 flex==6.14.1
-gitdb==4.0.2
-gitpython<=3.1.37
-greenlet==1.0.0
+gitdb==4.0.11
+gitpython==3.1.43
+greenlet==3.0.3
 gunicorn==21.2.0
-importlib-metadata>=4.8.3,<=4.10.1
-jinja2==2.11.3
+importlib-metadata==7.1.0
+jinja2==3.1.3
 jsonpath-rw==1.4.0
 jsonschema==3.2.0
-kombu==5.0.2
+kombu==5.3.6
 lockfile==0.12.2
 logshipper@ git+https://github.com/StackStorm/logshipper.git@stackstorm_patched ; platform_system=="Linux"
-mock==4.0.3
-mongoengine==0.23.0
-networkx<3
+mock==5.1.0
+mongoengine==0.23.1
+networkx==2.8.8
 nose
 nose-parallel==0.4.0
 nose-timer==1.0.1
-orjson==3.5.2
+orjson==3.10.0
 orquesta@ git+https://github.com/StackStorm/orquesta.git@v1.6.0
-oslo.config>=1.12.1,<1.13
-oslo.utils<5.0,>=4.0.0
-paramiko==2.11.0
+oslo.config==1.12.1
+oslo.utils==7.1.0
+paramiko==3.4.0
 passlib==1.7.4
-prettytable==2.1.0
-prompt-toolkit==1.0.15
-psutil==5.8.0
-pyOpenSSL==23.1.0
+prettytable==3.10.0
+prompt-toolkit==1.0.18
+psutil==5.9.8
+pyOpenSSL
 pyinotify==0.9.6 ; platform_system=="Linux"
-pymongo==3.11.3
-pyparsing<3
+pymongo==3.12.3
+pyparsing==3.1.2
 pyrabbit
 pysocks
-python-dateutil==2.8.1
+python-dateutil==2.9.0
 python-editor==1.0.4
 python-json-logger
 python-statsd==2.1.0
-pytz==2021.1
-pywinrm==0.4.1
-pyyaml==5.4.1
-redis==4.1.4
+pytz==2024.1
+pywinrm==0.4.3
+pyyaml==6.0.1
+redis==5.0.3
 rednose
-requests[security]==2.25.1
-retrying==1.3.3
-routes==2.4.1
-semver==2.13.0
+requests==2.31.0
+retrying==1.3.4
+routes==2.5.1
+semver==3.0.2
 simplejson
-six==1.13.0
-sseclient-py==1.7
+six==1.16.0
+sseclient-py==1.8.0
 st2-auth-backend-flat-file@ git+https://github.com/StackStorm/st2-auth-backend-flat-file.git@master
 st2-auth-ldap@ git+https://github.com/StackStorm/st2-auth-ldap.git@master
 st2-rbac-backend@ git+https://github.com/StackStorm/st2-rbac-backend.git@master
-stevedore==1.30.1
-tenacity>=3.2.1,<7.0.0
-tooz==2.8.0
-typing-extensions<4.2
+stevedore==5.2.0
+tenacity==8.2.3
+tooz==6.1.0
+typing-extensions==4.11.0
 unittest2
 webob==1.8.7
 webtest
 zake==0.2.2
-zipp<3.16.0
-zstandard==0.15.2
+zipp==3.18.1
+zstandard==0.22.0
diff --git a/st2actions/requirements.txt b/st2actions/requirements.txt
index bdfe4e8b1c..2d8a29aa2b 100644
--- a/st2actions/requirements.txt
+++ b/st2actions/requirements.txt
@@ -5,21 +5,21 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-MarkupSafe<2.1.0,>=0.23
-apscheduler==3.7.0
-chardet<3.1.0
-eventlet==0.33.3
-gitpython<=3.1.37
-jinja2==2.11.3
-kombu==5.0.2
+MarkupSafe==2.0.1
+apscheduler==3.10.4
+chardet==3.0.4
+eventlet==0.36.1
+gitpython==3.1.43
+jinja2==3.1.3
+kombu==5.3.6
 lockfile==0.12.2
 logshipper@ git+https://github.com/StackStorm/logshipper.git@stackstorm_patched ; platform_system=="Linux"
-oslo.config>=1.12.1,<1.13
-oslo.utils<5.0,>=4.0.0
+oslo.config==1.12.1
+oslo.utils==7.1.0
 pyinotify==0.9.6 ; platform_system=="Linux"
-pyparsing<3
-python-dateutil==2.8.1
+pyparsing==3.1.2
+python-dateutil==2.9.0
 python-json-logger
-pyyaml==5.4.1
-requests[security]==2.25.1
-six==1.13.0
+pyyaml==6.0.1
+requests==2.31.0
+six==1.16.0
diff --git a/st2api/requirements.txt b/st2api/requirements.txt
index cfb7a8a2ed..a25ba0c568 100644
--- a/st2api/requirements.txt
+++ b/st2api/requirements.txt
@@ -5,14 +5,14 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-eventlet==0.33.3
+eventlet==0.36.1
 gunicorn==21.2.0
 jsonschema==3.2.0
-kombu==5.0.2
-mongoengine==0.23.0
-oslo.config>=1.12.1,<1.13
-oslo.utils<5.0,>=4.0.0
-pymongo==3.11.3
-pyparsing<3
+kombu==5.3.6
+mongoengine==0.23.1
+oslo.config==1.12.1
+oslo.utils==7.1.0
+pymongo==3.12.3
+pyparsing==3.1.2
 simplejson
-six==1.13.0
+six==1.16.0
diff --git a/st2auth/requirements.txt b/st2auth/requirements.txt
index e4d7f91fb9..ef2ba0fba4 100644
--- a/st2auth/requirements.txt
+++ b/st2auth/requirements.txt
@@ -5,13 +5,13 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-bcrypt==3.2.0
-eventlet==0.33.3
+bcrypt==4.1.2
+eventlet==0.36.1
 gunicorn==21.2.0
-oslo.config>=1.12.1,<1.13
+oslo.config==1.12.1
 passlib==1.7.4
-pymongo==3.11.3
-six==1.13.0
+pymongo==3.12.3
+six==1.16.0
 st2-auth-backend-flat-file@ git+https://github.com/StackStorm/st2-auth-backend-flat-file.git@master
 st2-auth-ldap@ git+https://github.com/StackStorm/st2-auth-ldap.git@master
-stevedore==1.30.1
+stevedore==5.2.0
diff --git a/st2client/requirements.txt b/st2client/requirements.txt
index 143e2ba6f5..aa09d1d5de 100644
--- a/st2client/requirements.txt
+++ b/st2client/requirements.txt
@@ -5,24 +5,24 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-argcomplete==1.12.3
-cffi<1.15.0
-chardet<3.1.0
-cryptography==39.0.1
-importlib-metadata>=4.8.3,<=4.10.1
+argcomplete==3.2.3
+cffi==1.16.0
+chardet==3.0.4
+cryptography==42.0.5
+importlib-metadata==7.1.0
 jsonpath-rw==1.4.0
 jsonschema==3.2.0
-orjson==3.5.2
-prettytable==2.1.0
-prompt-toolkit==1.0.15
-pyOpenSSL==23.1.0
+orjson==3.10.0
+prettytable==3.10.0
+prompt-toolkit==1.0.18
+pyOpenSSL
 pysocks
-python-dateutil==2.8.1
+python-dateutil==2.9.0
 python-editor==1.0.4
-pytz==2021.1
-pyyaml==5.4.1
-requests[security]==2.25.1
-six==1.13.0
-sseclient-py==1.7
-typing-extensions<4.2
-zipp<3.16.0
+pytz==2024.1
+pyyaml==6.0.1
+requests==2.31.0
+six==1.16.0
+sseclient-py==1.8.0
+typing-extensions==4.11.0
+zipp==3.18.1
diff --git a/st2common/requirements.txt b/st2common/requirements.txt
index d3bddfd2c1..68adaf57b7 100644
--- a/st2common/requirements.txt
+++ b/st2common/requirements.txt
@@ -5,45 +5,45 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-MarkupSafe<2.1.0,>=0.23
-amqp==5.0.6
-apscheduler==3.7.0
-cffi<1.15.0
-chardet<3.1.0
+MarkupSafe==2.0.1
+amqp==5.2.0
+apscheduler==3.10.4
+cffi==1.16.0
+chardet==3.0.4
 ciso8601
-cryptography==39.0.1
-decorator==4.4.2
-dnspython>=1.16.0,<2.0.0
-eventlet==0.33.3
+cryptography==42.0.5
+decorator==5.1.1
+dnspython==1.16.0
+eventlet==0.36.1
 flex==6.14.1
-gitdb==4.0.2
-gitpython<=3.1.37
-greenlet==1.0.0
-jinja2==2.11.3
+gitdb==4.0.11
+gitpython==3.1.43
+greenlet==3.0.3
+jinja2==3.1.3
 jsonpath-rw==1.4.0
 jsonschema==3.2.0
-kombu==5.0.2
+kombu==5.3.6
 lockfile==0.12.2
-mongoengine==0.23.0
-networkx<3
-orjson==3.5.2
+mongoengine==0.23.1
+networkx==2.8.8
+orjson==3.10.0
 orquesta@ git+https://github.com/StackStorm/orquesta.git@v1.6.0
-oslo.config>=1.12.1,<1.13
-paramiko==2.11.0
-pyOpenSSL==23.1.0
-pymongo==3.11.3
-python-dateutil==2.8.1
+oslo.config==1.12.1
+paramiko==3.4.0
+pyOpenSSL
+pymongo==3.12.3
+python-dateutil==2.9.0
 python-statsd==2.1.0
-pyyaml==5.4.1
-redis==4.1.4
-requests[security]==2.25.1
-retrying==1.3.3
-routes==2.4.1
-semver==2.13.0
-six==1.13.0
+pyyaml==6.0.1
+redis==5.0.3
+requests==2.31.0
+retrying==1.3.4
+routes==2.5.1
+semver==3.0.2
+six==1.16.0
 st2-rbac-backend@ git+https://github.com/StackStorm/st2-rbac-backend.git@master
-tenacity>=3.2.1,<7.0.0
-tooz==2.8.0
+tenacity==8.2.3
+tooz==6.1.0
 webob==1.8.7
 zake==0.2.2
-zstandard==0.15.2
+zstandard==0.22.0
diff --git a/st2reactor/requirements.txt b/st2reactor/requirements.txt
index 321e89f6ee..0dd9c92bf6 100644
--- a/st2reactor/requirements.txt
+++ b/st2reactor/requirements.txt
@@ -5,11 +5,11 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-apscheduler==3.7.0
-eventlet==0.33.3
+apscheduler==3.10.4
+eventlet==0.36.1
 jsonpath-rw==1.4.0
 jsonschema==3.2.0
-kombu==5.0.2
-oslo.config>=1.12.1,<1.13
-python-dateutil==2.8.1
-six==1.13.0
+kombu==5.3.6
+oslo.config==1.12.1
+python-dateutil==2.9.0
+six==1.16.0
diff --git a/st2stream/requirements.txt b/st2stream/requirements.txt
index 9efb2b85d3..7b882082ac 100644
--- a/st2stream/requirements.txt
+++ b/st2stream/requirements.txt
@@ -5,13 +5,13 @@
 # If you want to update depdencies for a single component, modify the
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
-eventlet==0.33.3
+eventlet==0.36.1
 gunicorn==21.2.0
 jsonschema==3.2.0
-kombu==5.0.2
-mongoengine==0.23.0
-oslo.config>=1.12.1,<1.13
-oslo.utils<5.0,>=4.0.0
-pymongo==3.11.3
-pyparsing<3
-six==1.13.0
+kombu==5.3.6
+mongoengine==0.23.1
+oslo.config==1.12.1
+oslo.utils==7.1.0
+pymongo==3.12.3
+pyparsing==3.1.2
+six==1.16.0


Test patch:
diff --git a/st2common/bin/st2-run-pack-tests b/st2common/bin/st2-run-pack-tests
index bf652dd8d1..beb325f7f8 100755
--- a/st2common/bin/st2-run-pack-tests
+++ b/st2common/bin/st2-run-pack-tests
@@ -41,7 +41,7 @@ PACK_TEST_PYTHON_DEPENDENCIES_NAMES=(
     'coverage'
 )
 PACK_TEST_PYTHON_DEPENDENCIES_VERSIONS=(
-    '>=2.0,<2.1'
+    '>=4.0.3'
     '>=1.1.0,<2.0'
     '>=1.3.7'
     '>=0.7.0'
diff --git a/st2tests/requirements.txt b/st2tests/requirements.txt
index 4cc6d89e75..3245e370c8 100644
--- a/st2tests/requirements.txt
+++ b/st2tests/requirements.txt
@@ -6,11 +6,11 @@
 # in-requirements.txt for that component and then run 'make requirements' to
 # update the component requirements.txt
 RandomWords
-mock==4.0.3
+mock==5.1.0
 nose
 nose-parallel==0.4.0
 nose-timer==1.0.1
-psutil==5.8.0
+psutil==5.9.8
 pyrabbit
 rednose
 unittest2
diff --git a/st2tests/st2tests/fixtures/packs/test_library_dependencies/requirements.txt b/st2tests/st2tests/fixtures/packs/test_library_dependencies/requirements.txt
index ffe2fce498..669b775f9d 100644
--- a/st2tests/st2tests/fixtures/packs/test_library_dependencies/requirements.txt
+++ b/st2tests/st2tests/fixtures/packs/test_library_dependencies/requirements.txt
@@ -1,1 +1,3 @@
-six
+# This is purposely an older version to test that it gets installed
+# in the pack virtualenv, shadowing six from st2 virtualenv.
+six<1.13.0
diff --git a/test-requirements.txt b/test-requirements.txt
index 0145399504..9b23e1e544 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -9,11 +9,12 @@ pre-commit==2.1.0
 bandit==1.7.0
 ipython<6.0.0
 isort>=4.2.5
-mock==4.0.3
+mock==5.1.0
 nose>=1.3.7
 tabulate
 unittest2
-sphinx==1.7.9
+# # 4.5.0 required for Jinja-3.1.3 support but >5.0 required by rstcheck and lower than 7.2 which drops py3.8 support
+sphinx>=5.0.0,<7.2.0
 sphinx-autobuild
 # pin alabaster (sphinx dependency) or pip installs one that is not compatible
 alabaster<0.7.14
@@ -23,26 +24,24 @@ nose-timer==1.0.1
 # splitting tests run on a separate CI machines
 nose-parallel==0.4.0
 # Required by st2client tests
-pyyaml==5.4.1
+pyyaml==6.0.1
 RandomWords
 gunicorn==21.2.0
 psutil==5.8.0
 webtest==2.0.35
-rstcheck>=3.3.1,<3.4
+# Bump to latest to meet sphinx requirements.
+rstcheck==6.2.1
 tox==3.23.0
 pyrabbit
-prance==0.15.0
+prance==23.6.21.0
 # pip-tools provides pip-compile: to check for version conflicts
-# pip-tools 5.3 needs pip<20.3
-# pip-tools 5.4 needs pip>=20.1
-# pip-tools 6.0 needs pip>=20.3
-pip-tools>=5.4,<6.1
+pip-tools==7.4.1
 pytest==6.2.3
 pytest-benchmark==3.4.1
 pytest-benchmark[histogram]==3.4.1
 # zstandard is used for micro benchmarks
-zstandard==0.15.2
+zstandard==0.22.0
 # ujson is used for micro benchmarks
-ujson==4.0.2
+ujson==5.9.0
 # needed by integration tests for coordination
-redis==3.5.3
+redis==5.0.3