diff --git a/pyproject.toml b/pyproject.toml index 6f11f9cee..ba978c245 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 diff --git a/src/documents/management/commands/document_consumer.py b/src/documents/management/commands/document_consumer.py index ebf4e07a0..b77e4281b 100644 --- a/src/documents/management/commands/document_consumer.py +++ b/src/documents/management/commands/document_consumer.py @@ -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 diff --git a/src/documents/management/commands/document_importer.py b/src/documents/management/commands/document_importer.py index 1120e7d1b..3a66ee1c2 100644 --- a/src/documents/management/commands/document_importer.py +++ b/src/documents/management/commands/document_importer.py @@ -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: diff --git a/src/documents/management/commands/document_thumbnails.py b/src/documents/management/commands/document_thumbnails.py index def58c1d8..3c1b7c542 100644 --- a/src/documents/management/commands/document_thumbnails.py +++ b/src/documents/management/commands/document_thumbnails.py @@ -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): diff --git a/src/documents/migrations/1012_fix_archive_files.py b/src/documents/migrations/1012_fix_archive_files.py index 46951471e..4db0389f9 100644 --- a/src/documents/migrations/1012_fix_archive_files.py +++ b/src/documents/migrations/1012_fix_archive_files.py @@ -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) diff --git a/src/documents/migrations/1021_webp_thumbnail_conversion.py b/src/documents/migrations/1021_webp_thumbnail_conversion.py index 3b2ac9b16..1ebc7829b 100644 --- a/src/documents/migrations/1021_webp_thumbnail_conversion.py +++ b/src/documents/migrations/1021_webp_thumbnail_conversion.py @@ -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") diff --git a/src/documents/migrations/1037_webp_encrypted_thumbnail_conversion.py b/src/documents/migrations/1037_webp_encrypted_thumbnail_conversion.py index a706de412..02ca6c35b 100644 --- a/src/documents/migrations/1037_webp_encrypted_thumbnail_conversion.py +++ b/src/documents/migrations/1037_webp_encrypted_thumbnail_conversion.py @@ -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") diff --git a/src/documents/tasks.py b/src/documents/tasks.py index a3b37f5a8..f4af14aa6 100644 --- a/src/documents/tasks.py +++ b/src/documents/tasks.py @@ -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 diff --git a/src/documents/tests/test_consumer.py b/src/documents/tests/test_consumer.py index 9490c16f6..bdd3e6f39 100644 --- a/src/documents/tests/test_consumer.py +++ b/src/documents/tests/test_consumer.py @@ -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 diff --git a/src/documents/tests/test_date_parsing.py b/src/documents/tests/test_date_parsing.py index f0afae543..a222b6f4b 100644 --- a/src/documents/tests/test_date_parsing.py +++ b/src/documents/tests/test_date_parsing.py @@ -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: diff --git a/src/documents/tests/test_management_thumbnails.py b/src/documents/tests/test_management_thumbnails.py index 3f4452da5..a3923943a 100644 --- a/src/documents/tests/test_management_thumbnails.py +++ b/src/documents/tests/test_management_thumbnails.py @@ -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): diff --git a/src/documents/tests/test_migration_archive_files.py b/src/documents/tests/test_migration_archive_files.py index 5039e13de..37f0c2209 100644 --- a/src/documents/tests/test_migration_archive_files.py +++ b/src/documents/tests/test_migration_archive_files.py @@ -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" diff --git a/src/documents/tests/test_migration_mime_type.py b/src/documents/tests/test_migration_mime_type.py index 63892eb79..b0ecf5f35 100644 --- a/src/documents/tests/test_migration_mime_type.py +++ b/src/documents/tests/test_migration_mime_type.py @@ -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" diff --git a/src/documents/tests/test_parsers.py b/src/documents/tests/test_parsers.py index fee7234e8..995fb5fa0 100644 --- a/src/documents/tests/test_parsers.py +++ b/src/documents/tests/test_parsers.py @@ -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 diff --git a/src/documents/tests/utils.py b/src/documents/tests/utils.py index 5be5621aa..cfcea7c30 100644 --- a/src/documents/tests/utils.py +++ b/src/documents/tests/utils.py @@ -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(): diff --git a/src/paperless/consumer.py b/src/paperless/consumer.py index 774905ce9..6e5acde32 100644 --- a/src/paperless/consumer.py +++ b/src/paperless/consumer.py @@ -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 diff --git a/src/paperless/models.py b/src/paperless/models.py index 92cf66e63..a6b676808 100644 --- a/src/paperless/models.py +++ b/src/paperless/models.py @@ -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 diff --git a/src/documents/parsers.py b/src/paperless/parsers.py similarity index 100% rename from src/documents/parsers.py rename to src/paperless/parsers.py diff --git a/src/paperless/serialisers.py b/src/paperless/serialisers.py index 12dfc1c88..eefe70b0b 100644 --- a/src/paperless/serialisers.py +++ b/src/paperless/serialisers.py @@ -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 diff --git a/src/paperless/views.py b/src/paperless/views.py index e8d00ac14..f59e28007 100644 --- a/src/paperless/views.py +++ b/src/paperless/views.py @@ -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 diff --git a/src/paperless_mail/mail.py b/src/paperless_mail/mail.py index be1354290..0748fea53 100644 --- a/src/paperless_mail/mail.py +++ b/src/paperless_mail/mail.py @@ -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 diff --git a/src/paperless_mail/parsers.py b/src/paperless_mail/parsers.py index 44032a2e9..15d3399a9 100644 --- a/src/paperless_mail/parsers.py +++ b/src/paperless_mail/parsers.py @@ -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 diff --git a/src/paperless_mail/tests/test_parsers.py b/src/paperless_mail/tests/test_parsers.py index dbd2c82cd..89688a232 100644 --- a/src/paperless_mail/tests/test_parsers.py +++ b/src/paperless_mail/tests/test_parsers.py @@ -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 diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index 48d13021f..21bec150c 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -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 diff --git a/src/paperless_tesseract/tests/test_parser.py b/src/paperless_tesseract/tests/test_parser.py index f7490fbbf..598976eda 100644 --- a/src/paperless_tesseract/tests/test_parser.py +++ b/src/paperless_tesseract/tests/test_parser.py @@ -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 diff --git a/src/paperless_text/parsers.py b/src/paperless_text/parsers.py index 58df11d7a..f87e8fa9e 100644 --- a/src/paperless_text/parsers.py +++ b/src/paperless_text/parsers.py @@ -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): diff --git a/src/paperless_tika/parsers.py b/src/paperless_tika/parsers.py index 40aa8e581..c3344be03 100644 --- a/src/paperless_tika/parsers.py +++ b/src/paperless_tika/parsers.py @@ -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): diff --git a/src/paperless_tika/tests/test_tika_parser.py b/src/paperless_tika/tests/test_tika_parser.py index 05bc4fe2e..bda2cb6c4 100644 --- a/src/paperless_tika/tests/test_tika_parser.py +++ b/src/paperless_tika/tests/test_tika_parser.py @@ -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