Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.11', '3.12']
python-version: ['3.12']
toxenv: [django42, django52, quality]

env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pypi-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
- name: setup python
uses: actions/setup-python@v2
with:
python-version: 3.11
python-version: 3.12

- name: Install pip and pip-tools
run: pip install -r requirements/pip-tools.txt
Expand Down
30 changes: 30 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,36 @@ This is a django application to provide access to search services from within ed

Searching is accomplished by creating an index of documents, and then searching within that index for matching information. This application provides a way to add documents to the index, and then search for them.

## Typesense Engine

edx-search includes an optional `TypesenseEngine` backend (`search.typesense.TypesenseEngine`).

### Server version requirement

| typesense-python | Typesense Server |
|------------------|-----------------|
| >= 2.0.0 | >= v30.0 |
| >= 1.0.0 | >= v28.0 |

**This version of edx-search requires typesense-python >= 2.0.0 and therefore Typesense Server >= v30.0.**
If you are running an older Typesense server you must upgrade it before deploying this version of edx-search.

See the full compatibility table at https://github.com/typesense/typesense-python#compatibility.

### Enabling the Typesense engine

```python
SEARCH_ENGINE = "search.typesense.TypesenseEngine"
```

You will also need to configure the Typesense connection in your Django settings (host, port, API key).
After switching, create the indices using the shell (no management command exists yet — see
https://github.com/openedx/edx-platform/issues/36868 for the longer-term plan):

```shell
./manage.py lms shell -c "import search.typesense; search.typesense.create_indexes()"
```

## SearchEngine
The SearchEngine is an abstract object which may have multiple implementations. As of Verawood, there are four in existence:

Expand Down
2 changes: 1 addition & 1 deletion edxsearch/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
""" Container module for testing / demoing search """

__version__ = '4.4.0'
__version__ = '5.0.0'
61 changes: 36 additions & 25 deletions requirements/base.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile with Python 3.11
# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
Expand All @@ -8,23 +8,27 @@ amqp==5.3.1
# via kombu
annotated-types==0.7.0
# via pydantic
asgiref==3.11.0
anyio==4.12.1
# via httpx
asgiref==3.11.1
# via django
attrs==25.4.0
# via openedx-events
billiard==4.2.4
# via celery
camel-converter[pydantic]==5.0.0
camel-converter[pydantic]==5.1.0
# via meilisearch
celery==5.6.0
celery==5.6.2
# via event-tracking
certifi==2025.11.12
certifi==2026.2.25
# via
# elasticsearch
# httpcore
# httpx
# requests
cffi==2.0.0
# via pynacl
charset-normalizer==3.4.4
charset-normalizer==3.4.5
# via requests
click==8.3.1
# via
Expand All @@ -40,9 +44,9 @@ click-plugins==1.1.1.2
# via celery
click-repl==0.3.0
# via celery
code-annotations==2.3.0
code-annotations==2.3.2
# via edx-toggles
django==5.2.9
django==5.2.12
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -r requirements/base.in
Expand All @@ -69,7 +73,7 @@ edx-django-utils==8.0.1
# edx-toggles
# event-tracking
# openedx-events
edx-opaque-keys[django]==3.0.0
edx-opaque-keys[django]==3.1.0
# via
# edx-ccx-keys
# openedx-events
Expand All @@ -83,73 +87,80 @@ elasticsearch==7.13.4
# -r requirements/base.in
event-tracking==3.3.0
# via -r requirements/base.in
exceptiongroup==1.3.1
# via celery
fastavro==1.12.1
# via openedx-events
h11==0.16.0
# via httpcore
httpcore==1.0.9
# via httpx
httpx==0.28.1
# via typesense
idna==3.11
# via requests
# via
# anyio
# httpx
# requests
jinja2==3.1.6
# via code-annotations
kombu==5.6.1
kombu==5.6.2
# via celery
markupsafe==3.0.3
# via jinja2
meilisearch==0.38.0
meilisearch==0.40.0
# via -r requirements/base.in
openedx-events==10.5.0
# via event-tracking
packaging==25.0
packaging==26.0
# via kombu
prompt-toolkit==3.0.52
# via click-repl
psutil==7.2.1
psutil==7.2.2
# via edx-django-utils
pycparser==2.23
pycparser==3.0
# via cffi
pydantic==2.12.5
# via camel-converter
pydantic-core==2.41.5
# via pydantic
pymongo==4.15.5
pymongo==4.16.0
# via
# edx-opaque-keys
# event-tracking
pynacl==1.6.1
pynacl==1.6.2
# via edx-django-utils
python-dateutil==2.9.0.post0
# via celery
python-slugify==8.0.4
# via code-annotations
pytz==2025.2
pytz==2026.1.post1
# via event-tracking
pyyaml==6.0.3
# via code-annotations
requests==2.32.5
# via meilisearch
# typesense
six==1.17.0
# via
# edx-ccx-keys
# event-tracking
# python-dateutil
sqlparse==0.5.5
# via django
stevedore==5.6.0
stevedore==5.7.0
# via
# code-annotations
# edx-django-utils
# edx-opaque-keys
text-unidecode==1.3
# via python-slugify
typesense==1.1.1
typesense==2.0.0
# via -r requirements/base.in
typing-extensions==4.15.0
# via
# anyio
# edx-opaque-keys
# exceptiongroup
# pydantic
# pydantic-core
# typesense
# typing-inspection
typing-inspection==0.4.2
# via pydantic
Expand All @@ -166,7 +177,7 @@ vine==5.1.0
# amqp
# celery
# kombu
wcwidth==0.2.14
wcwidth==0.6.0
# via prompt-toolkit

# The following packages are considered to be unsafe in a requirements file:
Expand Down
22 changes: 13 additions & 9 deletions requirements/ci.txt
Original file line number Diff line number Diff line change
@@ -1,34 +1,38 @@
#
# This file is autogenerated by pip-compile with Python 3.11
# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
#
cachetools==6.2.4
# via tox
chardet==5.2.0
cachetools==7.0.3
# via tox
colorama==0.4.6
# via tox
distlib==0.4.0
# via virtualenv
filelock==3.20.1
filelock==3.25.0
# via
# python-discovery
# tox
# virtualenv
packaging==25.0
packaging==26.0
# via
# pyproject-api
# tox
platformdirs==4.5.1
platformdirs==4.9.4
# via
# python-discovery
# tox
# virtualenv
pluggy==1.6.0
# via tox
pyproject-api==1.10.0
# via tox
tox==4.32.0
python-discovery==1.1.0
# via virtualenv
tomli-w==1.2.0
# via tox
tox==4.49.0
# via -r requirements/ci.in
virtualenv==20.35.4
virtualenv==21.1.0
# via tox
Loading
Loading