diff --git a/requirements/constraints.txt b/requirements/constraints.txt index ba888ac023ba..549fa458d597 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -119,6 +119,27 @@ openedx-learning==0.26.0 # Issue for unpinning: https://github.com/openedx/edx-platform/issues/35268 openai<=0.28.1 +# Date: 2026-06-04 +# Cap openedx-forum to 0.4.1 on the Teak release line: +# * 0.4.1 contains the fix for the "pinned" NULL sort bug +# (https://github.com/openedx/forum/pull/270 — discussion threads were not +# ordering correctly when sorted by "recent first"). See user report: +# https://discuss.openedx.org/t/discuss-forum-messages-order-not-organized-as-expected-in-teak/18665 +# * 0.4.2 drops Python 3.11 support, which Teak still supports. +# * 0.4.3 removes the MongoDB backend, which Teak deployments may still rely on. +# Remove this cap on master / post-Teak release lines. +openedx-forum<=0.4.1 + +# Date: 2026-06-04 +# openedx-forum>=0.4.1 introduces an (off-by-default) Typesense search backend +# that depends on the `typesense` Python client. typesense>=2.0.0 requires +# httpx>=0.28.1, which conflicts with pact-python==2.0.1 (a transitive test +# dependency on this release line) that pins httpx==0.23.3. typesense==1.3.0 +# only requires `requests`+`typing-extensions` and is sufficient for the +# Meilisearch/Elasticsearch backends that are actually used on Teak. Drop this +# cap when pact-python is upgraded past 2.0.x. +typesense<2.0.0 + # Date: 2024-04-26 # path==16.12.0 breaks the unit test collections check # needs to be investigated and fixed separately diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 5e7beb804df1..d700bc6f1779 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -815,8 +815,10 @@ openedx-filters==2.0.1 # -r requirements/edx/kernel.in # lti-consumer-xblock # ora2 -openedx-forum==0.4.0 - # via -r requirements/edx/kernel.in +openedx-forum==0.4.1 + # via + # -c requirements/edx/../constraints.txt + # -r requirements/edx/kernel.in openedx-learning==0.26.0 # via # -c requirements/edx/../constraints.txt @@ -1046,6 +1048,7 @@ requests==2.32.3 # slumber # snowflake-connector-python # social-auth-core + # typesense # xblock-google-drive requests-oauthlib==2.0.0 # via @@ -1155,6 +1158,10 @@ tqdm==4.67.1 # via # nltk # openai +typesense==1.3.0 + # via + # -c requirements/edx/../constraints.txt + # openedx-forum typing-extensions==4.13.2 # via # beautifulsoup4 @@ -1167,6 +1174,7 @@ typing-extensions==4.13.2 # pyopenssl # referencing # snowflake-connector-python + # typesense # typing-inspection typing-inspection==0.4.0 # via pydantic diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 1eb8e59d1d60..7974a84fe16a 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -1374,8 +1374,9 @@ openedx-filters==2.0.1 # -r requirements/edx/testing.txt # lti-consumer-xblock # ora2 -openedx-forum==0.4.0 +openedx-forum==0.4.1 # via + # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt openedx-learning==0.26.0 @@ -1831,6 +1832,7 @@ requests==2.32.3 # snowflake-connector-python # social-auth-core # sphinx + # typesense # xblock-google-drive requests-oauthlib==2.0.0 # via @@ -2099,6 +2101,12 @@ types-pyyaml==6.0.12.20250402 # djangorestframework-stubs types-requests==2.32.0.20250328 # via djangorestframework-stubs +typesense==1.3.0 + # via + # -c requirements/edx/../constraints.txt + # -r requirements/edx/doc.txt + # -r requirements/edx/testing.txt + # openedx-forum typing-extensions==4.13.2 # via # -r requirements/edx/doc.txt @@ -2122,6 +2130,7 @@ typing-extensions==4.13.2 # pyopenssl # referencing # snowflake-connector-python + # typesense # typing-inspection typing-inspection==0.4.0 # via diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt index b8cbcd960681..d38baf49944c 100644 --- a/requirements/edx/doc.txt +++ b/requirements/edx/doc.txt @@ -986,8 +986,10 @@ openedx-filters==2.0.1 # -r requirements/edx/base.txt # lti-consumer-xblock # ora2 -openedx-forum==0.4.0 - # via -r requirements/edx/base.txt +openedx-forum==0.4.1 + # via + # -c requirements/edx/../constraints.txt + # -r requirements/edx/base.txt openedx-learning==0.26.0 # via # -c requirements/edx/../constraints.txt @@ -1276,6 +1278,7 @@ requests==2.32.3 # snowflake-connector-python # social-auth-core # sphinx + # typesense # xblock-google-drive requests-oauthlib==2.0.0 # via @@ -1462,6 +1465,11 @@ tqdm==4.67.1 # -r requirements/edx/base.txt # nltk # openai +typesense==1.3.0 + # via + # -c requirements/edx/../constraints.txt + # -r requirements/edx/base.txt + # openedx-forum typing-extensions==4.13.2 # via # -r requirements/edx/base.txt @@ -1476,6 +1484,7 @@ typing-extensions==4.13.2 # pyopenssl # referencing # snowflake-connector-python + # typesense # typing-inspection typing-inspection==0.4.0 # via diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index 7995a7122ada..daa4635fe785 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -1044,8 +1044,10 @@ openedx-filters==2.0.1 # -r requirements/edx/base.txt # lti-consumer-xblock # ora2 -openedx-forum==0.4.0 - # via -r requirements/edx/base.txt +openedx-forum==0.4.1 + # via + # -c requirements/edx/../constraints.txt + # -r requirements/edx/base.txt openedx-learning==0.26.0 # via # -c requirements/edx/../constraints.txt @@ -1397,6 +1399,7 @@ requests==2.32.3 # slumber # snowflake-connector-python # social-auth-core + # typesense # xblock-google-drive requests-oauthlib==2.0.0 # via @@ -1553,6 +1556,11 @@ tqdm==4.67.1 # -r requirements/edx/base.txt # nltk # openai +typesense==1.3.0 + # via + # -c requirements/edx/../constraints.txt + # -r requirements/edx/base.txt + # openedx-forum typing-extensions==4.13.2 # via # -r requirements/edx/base.txt @@ -1570,6 +1578,7 @@ typing-extensions==4.13.2 # pyopenssl # referencing # snowflake-connector-python + # typesense # typing-inspection typing-inspection==0.4.0 # via