Trenton H
90d23bad9c
Chore: Give the search index directory one owner in the tests ( #14217 )
...
Two fixtures created a temporary index directory and pointed INDEX_DIR at it, and paperless_dirs did the same, so a test that requested more than one got whichever assignment ran last. The search conftest no longer defines its own index_dir fixture, the tests that took it read paperless_dirs.index_dir instead, and _search_index is now a thin wrapper that requests paperless_dirs. The fixture that yields a Document is renamed from indexed_document to searchable_document so it no longer differs by one character from the index_document factory next to it.
2026-09-22 08:02:17 -07:00
Trenton H
e4367b5648
Chore: Delete the in-memory Tantivy backend and run the search tests on disk ( #14216 )
...
TantivyBackend(path=None) built an in-memory index that is not used by production ever used. The backend now requires a path, the open, write-batch and rebuild branches are gone, and the shared backend fixture and the fulltext similar-documents fixture build a real index under the per-test directory layout.
2026-09-22 08:02:16 -07:00
Trenton H
48d97b78bb
Chore: Move model factories to the shared test layer ( #14170 )
...
The model factories lived in the documents test package, but three other
apps needed them. The AI, mail and testing suites all reached across an app
boundary to import from documents.tests.factories, which made a private test
package into a shared dependency.
The factories now live in the shared testing package, where cross-app use is
the intended use.
2026-09-21 10:57:11 -07:00
Trenton H
fdd32b73bb
Chore: Move the search tests onto the shared indexing fixtures ( #14159 )
2026-09-17 14:55:13 -07:00
Trenton H
762e8cf4d1
Feature: match CJK terms through their bigram fields in place ( #14156 )
...
QUERY-mode searches blended a separate bigram clause in at the top of the
query, built from the parsed AST's free-text tokens. Because it sat beside
the exact clause rather than inside the query, nothing around a CJK term
constrained its bigram match: an exclusion that was one OR branch's own
condition could never reach it, so "(東京 AND NOT secret) OR bill" still
returned the secret document.
Widen each CJK leaf where it sits instead, through emit()'s rewrite_leaf
hook, so every AND, NOT, REQUIRE, boost and field restriction around the
leaf applies to its bigram match too. Negated leaves are widened on
purpose, so "NOT X" excludes exactly what "X" matches.
2026-09-17 14:55:13 -07:00
Trenton H
1f8b6c95b1
Feature: parse advanced search with whoosh-compat and delete the handwritten translation ( #14072 )
...
* Feature: parse advanced search with whoosh-compat and delete the hand-written translator
* Don't cover these, they exist for defensive, but there's no other current diagnostic
* A mix of more no cover and tests
* Route SCHEMA_FIELD_MISSING into an error, not an HTTP 400
2026-09-15 07:26:41 -07:00
dependabot[bot] and Trenton Holmes
f287a4cb8c
Chore(deps): Bump the utilities-minor group across 1 directory with 11 updates ( #13988 )
...
* Chore(deps): Bump the utilities-minor group across 1 directory with 11 updates
Bumps the utilities-minor group with 11 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [django-guardian](https://github.com/django-guardian/django-guardian ) | `3.3.3` | `3.4.0` |
| [django-treenode](https://github.com/fabiocaccamo/django-treenode ) | `0.24.0` | `0.25.0` |
| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar ) | `2026.7.1` | `2026.8.1` |
| [imap-tools](https://github.com/ikvk/imap_tools ) | `1.14.0` | `1.15.0` |
| [ocrmypdf](https://github.com/ocrmypdf/OCRmyPDF ) | `17.10.0` | `17.11.0` |
| [prek](https://github.com/j178/prek ) | `0.4.11` | `0.5.0` |
| [faker](https://github.com/joke2k/faker ) | `40.36.0` | `40.37.0` |
| [pytest-django](https://github.com/pytest-dev/pytest-django ) | `4.12.0` | `4.14.0` |
| [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures ) | `16.4` | `16.6` |
| [time-machine](https://github.com/adamchainz/time-machine ) | `3.2.0` | `3.5.0` |
| [types-pygments](https://github.com/python/typeshed ) | `2.20.0.20260408` | `2.21.0.20260819` |
Updates `django-guardian` from 3.3.3 to 3.4.0
- [Release notes](https://github.com/django-guardian/django-guardian/releases )
- [Commits](https://github.com/django-guardian/django-guardian/compare/3.3.3...3.4.0 )
Updates `django-treenode` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/fabiocaccamo/django-treenode/releases )
- [Changelog](https://github.com/fabiocaccamo/django-treenode/blob/main/CHANGELOG.md )
- [Commits](https://github.com/fabiocaccamo/django-treenode/compare/0.24.0...0.25.0 )
Updates `drf-spectacular-sidecar` from 2026.7.1 to 2026.8.1
- [Commits](https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.7.1...2026.8.1 )
Updates `imap-tools` from 1.14.0 to 1.15.0
- [Release notes](https://github.com/ikvk/imap_tools/releases )
- [Changelog](https://github.com/ikvk/imap_tools/blob/master/docs/release_notes.rst )
- [Commits](https://github.com/ikvk/imap_tools/compare/v1.14.0...v1.15.0 )
Updates `ocrmypdf` from 17.10.0 to 17.11.0
- [Release notes](https://github.com/ocrmypdf/OCRmyPDF/releases )
- [Commits](https://github.com/ocrmypdf/OCRmyPDF/compare/v17.10.0...v17.11.0 )
Updates `prek` from 0.4.11 to 0.5.0
- [Release notes](https://github.com/j178/prek/releases )
- [Changelog](https://github.com/j178/prek/blob/master/CHANGELOG.md )
- [Commits](https://github.com/j178/prek/compare/v0.4.11...v0.5.0 )
Updates `faker` from 40.36.0 to 40.37.0
- [Release notes](https://github.com/joke2k/faker/releases )
- [Changelog](https://github.com/joke2k/faker/blob/master/CHANGELOG.md )
- [Commits](https://github.com/joke2k/faker/compare/v40.36.0...v40.37.0 )
Updates `pytest-django` from 4.12.0 to 4.14.0
- [Release notes](https://github.com/pytest-dev/pytest-django/releases )
- [Changelog](https://github.com/pytest-dev/pytest-django/blob/main/docs/changelog.rst )
- [Commits](https://github.com/pytest-dev/pytest-django/compare/v4.12.0...v4.14.0 )
Updates `pytest-rerunfailures` from 16.4 to 16.6
- [Changelog](https://github.com/pytest-dev/pytest-rerunfailures/blob/master/CHANGES.rst )
- [Commits](https://github.com/pytest-dev/pytest-rerunfailures/compare/16.4...16.6 )
Updates `time-machine` from 3.2.0 to 3.5.0
- [Changelog](https://github.com/adamchainz/time-machine/blob/main/docs/changelog.rst )
- [Commits](https://github.com/adamchainz/time-machine/compare/3.2.0...3.5.0 )
Updates `types-pygments` from 2.20.0.20260408 to 2.21.0.20260819
- [Commits](https://github.com/python/typeshed/commits )
---
updated-dependencies:
- dependency-name: django-guardian
dependency-version: 3.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: django-treenode
dependency-version: 0.25.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: drf-spectacular-sidecar
dependency-version: 2026.8.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: faker
dependency-version: 40.37.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: imap-tools
dependency-version: 1.15.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: ocrmypdf
dependency-version: 17.11.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: prek
dependency-version: 0.5.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: pytest-django
dependency-version: 4.14.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: pytest-rerunfailures
dependency-version: '16.6'
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: time-machine
dependency-version: 3.5.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: utilities-minor
- dependency-name: types-pygments
dependency-version: 2.21.0.20260819
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: utilities-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
* Handles pytest-django
* Formatting
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Trenton Holmes <797416+stumpylog@users.noreply.github.com >
2026-09-07 20:13:15 +00:00
Trenton H and Claude Sonnet 4.6
f4fa916579
Fix (beta): restore v2 (Whoosh) advanced-search query compatibility ( #13010 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 15:32:44 -07:00
aed9abe48c
Feature: Replace Whoosh with tantivy search backend ( #12471 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: Antoine Mérino <3023499+Merinorus@users.noreply.github.com >
2026-04-02 12:38:22 -07:00