]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Merge parsers
authorshamoon <4887959+shamoon@users.noreply.github.com>
Tue, 8 Apr 2025 23:35:40 +0000 (16:35 -0700)
committershamoon <4887959+shamoon@users.noreply.github.com>
Tue, 8 Apr 2025 23:35:40 +0000 (16:35 -0700)
28 files changed:
pyproject.toml
src/documents/management/commands/document_consumer.py
src/documents/management/commands/document_importer.py
src/documents/management/commands/document_thumbnails.py
src/documents/migrations/1012_fix_archive_files.py
src/documents/migrations/1021_webp_thumbnail_conversion.py
src/documents/migrations/1037_webp_encrypted_thumbnail_conversion.py
src/documents/tasks.py
src/documents/tests/test_consumer.py
src/documents/tests/test_date_parsing.py
src/documents/tests/test_management_thumbnails.py
src/documents/tests/test_migration_archive_files.py
src/documents/tests/test_migration_mime_type.py
src/documents/tests/test_parsers.py
src/documents/tests/utils.py
src/paperless/consumer.py
src/paperless/models.py
src/paperless/parsers.py [moved from src/documents/parsers.py with 100% similarity]
src/paperless/serialisers.py
src/paperless/views.py
src/paperless_mail/mail.py
src/paperless_mail/parsers.py
src/paperless_mail/tests/test_parsers.py
src/paperless_tesseract/parsers.py
src/paperless_tesseract/tests/test_parser.py
src/paperless_text/parsers.py
src/paperless_tika/parsers.py
src/paperless_tika/tests/test_tika_parser.py

index 6f11f9cee01fd2bc610c0cff60bb2457cde63c8f..ba978c24576c82e2b5e5827a4eaf65a7a6e4b8dc 100644 (file)
@@ -212,9 +212,6 @@ lint.per-file-ignores."src/documents/migrations/1012_fix_archive_files.py" = [
 lint.per-file-ignores."src/documents/models.py" = [
   "SIM115",
 ]
-lint.per-file-ignores."src/documents/parsers.py" = [
-  "PTH",
-] # TODO Enable & remove
 lint.per-file-ignores."src/documents/signals/handlers.py" = [
   "PTH",
 ] # TODO Enable & remove
@@ -254,6 +251,9 @@ lint.per-file-ignores."src/paperless/checks.py" = [
 lint.per-file-ignores."src/paperless/file_handling.py" = [
   "PTH",
 ] # TODO Enable & remove
+lint.per-file-ignores."src/paperless/parsers.py" = [
+  "PTH",
+] # TODO Enable & remove
 lint.per-file-ignores."src/paperless/settings.py" = [
   "PTH",
 ] # TODO Enable & remove
index ebf4e07a013a48b9c1a203ea9bcfdd363945b989..b77e4281b404d3663dd1c7b51259121928aaee53 100644 (file)
@@ -16,12 +16,12 @@ from django.core.management.base import CommandError
 from watchdog.events import FileSystemEventHandler
 from watchdog.observers.polling import PollingObserver
 
-from documents.parsers import is_file_ext_supported
 from documents.tasks import consume_file
 from paperless.data_models import ConsumableDocument
 from paperless.data_models import DocumentMetadataOverrides
 from paperless.data_models import DocumentSource
 from paperless.models import Tag
+from paperless.parsers import is_file_ext_supported
 
 try:
     from inotifyrecursive import INotify
index 1120e7d1b65d9af400b96ae7741d5a2af72972c6..3a66ee1c2e23cdb2201aa8732c4540cf6a8b2eb6 100644 (file)
@@ -22,7 +22,6 @@ from django.db.models.signals import post_save
 from filelock import FileLock
 
 from documents.management.commands.mixins import CryptMixin
-from documents.parsers import run_convert
 from documents.settings import EXPORTER_ARCHIVE_NAME
 from documents.settings import EXPORTER_CRYPTO_SETTINGS_NAME
 from documents.settings import EXPORTER_FILE_NAME
@@ -38,6 +37,7 @@ from paperless.models import Document
 from paperless.models import DocumentType
 from paperless.models import Note
 from paperless.models import Tag
+from paperless.parsers import run_convert
 from paperless.utils import copy_file_with_basic_stats
 
 if settings.AUDIT_LOG_ENABLED:
index def58c1d8d40546542c55bacda6f7640d3d8f68f..3c1b7c542fccd53c18d10798a36582a185554f09 100644 (file)
@@ -8,8 +8,8 @@ from django.core.management.base import BaseCommand
 
 from documents.management.commands.mixins import MultiProcessMixin
 from documents.management.commands.mixins import ProgressBarMixin
-from documents.parsers import get_parser_class_for_mime_type
 from paperless.models import Document
+from paperless.parsers import get_parser_class_for_mime_type
 
 
 def _process_document(doc_id):
index 46951471e114ee1e98ffd91291864320c3bf0b2a..4db0389f921ad26345f6d61d50c57758464b37aa 100644 (file)
@@ -189,9 +189,9 @@ def parse_wrapper(parser, path, mime_type, file_name):
 
 
 def create_archive_version(doc, retry_count=3):
-    from documents.parsers import DocumentParser
-    from documents.parsers import ParseError
-    from documents.parsers import get_parser_class_for_mime_type
+    from paperless.parsers import DocumentParser
+    from paperless.parsers import ParseError
+    from paperless.parsers import get_parser_class_for_mime_type
 
     logger.info(f"Regenerating archive document for document ID:{doc.id}")
     parser_class = get_parser_class_for_mime_type(doc.mime_type)
@@ -271,7 +271,7 @@ def move_old_to_new_locations(apps, schema_editor):
 
     # check that we can regenerate affected archive versions
     for doc_id in affected_document_ids:
-        from documents.parsers import get_parser_class_for_mime_type
+        from paperless.parsers import get_parser_class_for_mime_type
 
         doc = Document.objects.get(id=doc_id)
         parser_class = get_parser_class_for_mime_type(doc.mime_type)
index 3b2ac9b1616b7c9a707289c4d792c340fea9f3f5..1ebc7829b102278c7ebf3c0f4cc9e85637ed5fbc 100644 (file)
@@ -9,7 +9,7 @@ from pathlib import Path
 from django.conf import settings
 from django.db import migrations
 
-from documents.parsers import run_convert
+from paperless.parsers import run_convert
 
 logger = logging.getLogger("paperless.migrations")
 
index a706de412c1ad59530e8a768273b95105d644886..02ca6c35b7abab7b017b00cf1edaed59ef58fd13 100644 (file)
@@ -10,7 +10,7 @@ import gnupg
 from django.conf import settings
 from django.db import migrations
 
-from documents.parsers import run_convert
+from paperless.parsers import run_convert
 
 logger = logging.getLogger("paperless.migrations")
 
index a3b37f5a817b0b738498c15072fbce300cae5e41..f4af14aa66a7c13bdb119691cd1cf93529911cad 100644 (file)
@@ -21,8 +21,6 @@ from whoosh.writing import AsyncWriter
 
 from documents import sanity_checker
 from documents.caching import clear_document_caches
-from documents.parsers import DocumentParser
-from documents.parsers import get_parser_class_for_mime_type
 from documents.plugins.base import ConsumeTaskPlugin
 from documents.plugins.base import ProgressManager
 from documents.plugins.base import StopConsumeTaskError
@@ -52,6 +50,8 @@ from paperless.models import Tag
 from paperless.models import Workflow
 from paperless.models import WorkflowRun
 from paperless.models import WorkflowTrigger
+from paperless.parsers import DocumentParser
+from paperless.parsers import get_parser_class_for_mime_type
 
 if settings.AUDIT_LOG_ENABLED:
     from auditlog.models import LogEntry
index 9490c16f623b1cb4ccc531770304d47e30cfd0a6..bdd3e6f398de91bcac34309d02f8a8e501644520 100644 (file)
@@ -17,8 +17,6 @@ from django.test import override_settings
 from django.utils import timezone
 from guardian.core import ObjectPermissionChecker
 
-from documents.parsers import DocumentParser
-from documents.parsers import ParseError
 from documents.plugins.helpers import ProgressStatusOptions
 from documents.tasks import sanity_check
 from documents.tests.utils import DirectoriesMixin
@@ -33,6 +31,8 @@ from paperless.models import Document
 from paperless.models import DocumentType
 from paperless.models import StoragePath
 from paperless.models import Tag
+from paperless.parsers import DocumentParser
+from paperless.parsers import ParseError
 from paperless_mail.models import MailRule
 from paperless_mail.parsers import MailDocumentParser
 
index f0afae5433106fe525a5913940ebef3fcc972bd4..a222b6f4b989a7a3719138fb83faa8b625efb5e8 100644 (file)
@@ -3,8 +3,8 @@ from zoneinfo import ZoneInfo
 
 from pytest_django.fixtures import SettingsWrapper
 
-from documents.parsers import parse_date
-from documents.parsers import parse_date_generator
+from paperless.parsers import parse_date
+from paperless.parsers import parse_date_generator
 
 
 class TestDate:
index 3f4452da51976db41fc22e0a329adf524d6ce109..a3923943a2b3974eeb06cbd6913bda1ef98d11bd 100644 (file)
@@ -6,10 +6,10 @@ from django.core.management import call_command
 from django.test import TestCase
 
 from documents.management.commands.document_thumbnails import _process_document
-from documents.parsers import get_default_thumbnail
 from documents.tests.utils import DirectoriesMixin
 from documents.tests.utils import FileSystemAssertsMixin
 from paperless.models import Document
+from paperless.parsers import get_default_thumbnail
 
 
 class TestMakeThumbnails(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
index 5039e13deb0efdf855c26a608c5f5d96e08a36f6..37f0c22095929894b45eb5089fc862edd24dfa7c 100644 (file)
@@ -8,10 +8,10 @@ from unittest import mock
 from django.conf import settings
 from django.test import override_settings
 
-from documents.parsers import ParseError
 from documents.tests.utils import DirectoriesMixin
 from documents.tests.utils import FileSystemAssertsMixin
 from documents.tests.utils import TestMigrations
+from paperless.parsers import ParseError
 
 STORAGE_TYPE_GPG = "gpg"
 
index 63892eb794996c00df2b4d3533f47a4402ccf63c..b0ecf5f35d5d65e9349857778d0dbc548dfb6452 100644 (file)
@@ -4,9 +4,9 @@ import shutil
 from django.conf import settings
 from django.test import override_settings
 
-from documents.parsers import get_default_file_extension
 from documents.tests.utils import DirectoriesMixin
 from documents.tests.utils import TestMigrations
+from paperless.parsers import get_default_file_extension
 
 STORAGE_TYPE_UNENCRYPTED = "unencrypted"
 STORAGE_TYPE_GPG = "gpg"
index fee7234e889c6915745eee8c82221aa3c2c69ec7..995fb5fa07f6a09960e091829d62dcf5b1d41572 100644 (file)
@@ -5,10 +5,10 @@ from django.apps import apps
 from django.test import TestCase
 from django.test import override_settings
 
-from documents.parsers import get_default_file_extension
-from documents.parsers import get_parser_class_for_mime_type
-from documents.parsers import get_supported_file_extensions
-from documents.parsers import is_file_ext_supported
+from paperless.parsers import get_default_file_extension
+from paperless.parsers import get_parser_class_for_mime_type
+from paperless.parsers import get_supported_file_extensions
+from paperless.parsers import is_file_ext_supported
 from paperless_tesseract.parsers import RasterisedDocumentParser
 from paperless_text.parsers import TextDocumentParser
 from paperless_tika.parsers import TikaDocumentParser
index 5be5621aa6386eece1ad9201bdcc3da154c80fca..cfcea7c30addbfd9d3774c70dcd16b2f9651a4c3 100644 (file)
@@ -20,12 +20,12 @@ from django.db.migrations.executor import MigrationExecutor
 from django.test import TransactionTestCase
 from django.test import override_settings
 
-from documents.parsers import ParseError
 from documents.plugins.helpers import ProgressStatusOptions
 from paperless.consumer import ConsumerPlugin
 from paperless.data_models import ConsumableDocument
 from paperless.data_models import DocumentMetadataOverrides
 from paperless.data_models import DocumentSource
+from paperless.parsers import ParseError
 
 
 def setup_directories():
index 774905ce92e54783342190ea9b3ef702cb8df9f1..6e5acde325692a805f207c1c2ce5ba3abcabe594 100644 (file)
@@ -15,10 +15,6 @@ from django.utils import timezone
 from filelock import FileLock
 from rest_framework.reverse import reverse
 
-from documents.parsers import DocumentParser
-from documents.parsers import ParseError
-from documents.parsers import get_parser_class_for_mime_type
-from documents.parsers import parse_date
 from documents.plugins.base import AlwaysRunPluginMixin
 from documents.plugins.base import ConsumeTaskPlugin
 from documents.plugins.base import NoCleanupPluginMixin
@@ -43,6 +39,10 @@ from paperless.models import DocumentType
 from paperless.models import StoragePath
 from paperless.models import Tag
 from paperless.models import WorkflowTrigger
+from paperless.parsers import DocumentParser
+from paperless.parsers import ParseError
+from paperless.parsers import get_parser_class_for_mime_type
+from paperless.parsers import parse_date
 from paperless.permissions import set_permissions_for_object
 from paperless.utils import copy_basic_file_stats
 from paperless.utils import copy_file_with_basic_stats
index 92cf66e637770d1fd5d63090010991182070afb3..a6b67680850c2055e6222c55d2f3d9f757ea6133 100644 (file)
@@ -23,8 +23,8 @@ from django.db.models.functions import Cast
 from django.db.models.functions import Substr
 from django_softdelete.models import SoftDeleteModel
 
-from documents.parsers import get_default_file_extension
 from paperless.data_models import DocumentSource
+from paperless.parsers import get_default_file_extension
 
 DEFAULT_SINGLETON_INSTANCE_ID = 1
 
index 12dfc1c8845a4edbdc7933ed4d39c7298729c7f6..eefe70b0bc0528585258dd90bf566d4612380fe6 100644 (file)
@@ -35,7 +35,6 @@ if settings.AUDIT_LOG_ENABLED:
     from auditlog.context import set_actor
 
 
-from documents.parsers import is_mime_type_supported
 from documents.templating.filepath import validate_filepath_template_and_render
 from documents.templating.utils import convert_format_str_to_template_format
 from paperless import bulk_edit
@@ -59,6 +58,7 @@ from paperless.models import WorkflowAction
 from paperless.models import WorkflowActionEmail
 from paperless.models import WorkflowActionWebhook
 from paperless.models import WorkflowTrigger
+from paperless.parsers import is_mime_type_supported
 from paperless.permissions import get_groups_with_only_permission
 from paperless.permissions import set_permissions_for_object
 from paperless.validators import uri_validator
index e8d00ac14aebfaed2179a1c0a75600eff7a74276..f59e280076cfa8f8ce22e4c404b57b790aef22a1 100644 (file)
@@ -110,8 +110,6 @@ from documents.filters import ShareLinkFilterSet
 from documents.filters import StoragePathFilterSet
 from documents.filters import TagFilterSet
 from documents.mail import send_email
-from documents.parsers import get_parser_class_for_mime_type
-from documents.parsers import parse_date_generator
 from documents.schema import generate_object_with_permissions_schema
 from documents.signals import document_updated
 from documents.tasks import consume_file
@@ -159,6 +157,8 @@ from paperless.models import UiSettings
 from paperless.models import Workflow
 from paperless.models import WorkflowAction
 from paperless.models import WorkflowTrigger
+from paperless.parsers import get_parser_class_for_mime_type
+from paperless.parsers import parse_date_generator
 from paperless.permissions import PaperlessAdminPermissions
 from paperless.permissions import PaperlessNotePermissions
 from paperless.permissions import PaperlessObjectPermissions
index be135429091d1df2dda7588e8b04a53661719a44..0748fea530149ba33c04e683b1c93b92be925c32 100644 (file)
@@ -33,13 +33,13 @@ from imap_tools import errors
 from imap_tools.mailbox import MailBoxTls
 from imap_tools.query import LogicOperator
 
-from documents.parsers import is_mime_type_supported
 from documents.tasks import consume_file
 from paperless.data_models import ConsumableDocument
 from paperless.data_models import DocumentMetadataOverrides
 from paperless.data_models import DocumentSource
 from paperless.loggers import LoggingMixin
 from paperless.models import Correspondent
+from paperless.parsers import is_mime_type_supported
 from paperless_mail.models import MailAccount
 from paperless_mail.models import MailRule
 from paperless_mail.models import ProcessedMail
index 44032a2e93180b1ced9e04a26c2be8e54bfb9e16..15d3399a9dc7e78193b48304cb367c91c1529836 100644 (file)
@@ -18,10 +18,10 @@ from imap_tools import MailAttachment
 from imap_tools import MailMessage
 from tika_client import TikaClient
 
-from documents.parsers import DocumentParser
-from documents.parsers import ParseError
-from documents.parsers import make_thumbnail_from_pdf
 from paperless.models import OutputTypeChoices
+from paperless.parsers import DocumentParser
+from paperless.parsers import ParseError
+from paperless.parsers import make_thumbnail_from_pdf
 from paperless_mail.models import MailRule
 
 
index dbd2c82cd0403380333036b613504044d662228d..89688a232c6077069b6359f055bee932f7351526 100644 (file)
@@ -10,7 +10,7 @@ from pytest_django.fixtures import SettingsWrapper
 from pytest_httpx import HTTPXMock
 from pytest_mock import MockerFixture
 
-from documents.parsers import ParseError
+from paperless.parsers import ParseError
 from paperless_mail.parsers import MailDocumentParser
 
 
index 48d13021f4230fa8c281a21a8442afef26a02f61..21bec150cd924c21f621112f3cdaba681a252577 100644 (file)
@@ -7,13 +7,13 @@ from typing import TYPE_CHECKING
 from django.conf import settings
 from PIL import Image
 
-from documents.parsers import DocumentParser
-from documents.parsers import ParseError
-from documents.parsers import make_thumbnail_from_pdf
 from paperless.config import OcrConfig
 from paperless.models import ArchiveFileChoices
 from paperless.models import CleanChoices
 from paperless.models import ModeChoices
+from paperless.parsers import DocumentParser
+from paperless.parsers import ParseError
+from paperless.parsers import make_thumbnail_from_pdf
 from paperless.utils import maybe_override_pixel_limit
 from paperless.utils import run_subprocess
 
index f7490fbbf7f67700c19b767c188363f67d9648af..598976edaeb349c1dc50071db17559a817742a89 100644 (file)
@@ -9,10 +9,10 @@ from django.test import TestCase
 from django.test import override_settings
 from ocrmypdf import SubprocessOutputError
 
-from documents.parsers import ParseError
-from documents.parsers import run_convert
 from documents.tests.utils import DirectoriesMixin
 from documents.tests.utils import FileSystemAssertsMixin
+from paperless.parsers import ParseError
+from paperless.parsers import run_convert
 from paperless_tesseract.parsers import RasterisedDocumentParser
 from paperless_tesseract.parsers import post_process_text
 
index 58df11d7aa32203852331cbfa2802448f13f5c2b..f87e8fa9eaacc14a4e6e75763cbd43f7352034b3 100644 (file)
@@ -5,7 +5,7 @@ from PIL import Image
 from PIL import ImageDraw
 from PIL import ImageFont
 
-from documents.parsers import DocumentParser
+from paperless.parsers import DocumentParser
 
 
 class TextDocumentParser(DocumentParser):
index 40aa8e581e13d32a11cdd109d7e57e178d6c561d..c3344be03e45db5a2db52b6777b7fa32e9c07189 100644 (file)
@@ -7,11 +7,11 @@ from gotenberg_client import GotenbergClient
 from gotenberg_client.options import PdfAFormat
 from tika_client import TikaClient
 
-from documents.parsers import DocumentParser
-from documents.parsers import ParseError
-from documents.parsers import make_thumbnail_from_pdf
 from paperless.config import OutputTypeConfig
 from paperless.models import OutputTypeChoices
+from paperless.parsers import DocumentParser
+from paperless.parsers import ParseError
+from paperless.parsers import make_thumbnail_from_pdf
 
 
 class TikaDocumentParser(DocumentParser):
index 05bc4fe2e35335b9095ba4f3da5ed33f4e0b8c37..bda2cb6c443d3794742998663a1b9ab58774cb83 100644 (file)
@@ -8,7 +8,7 @@ from httpx import codes
 from pytest_django.fixtures import SettingsWrapper
 from pytest_httpx import HTTPXMock
 
-from documents.parsers import ParseError
+from paperless.parsers import ParseError
 from paperless_tika.parsers import TikaDocumentParser