diff --git a/.github/workflows/ci-backend.yml b/.github/workflows/ci-backend.yml index f208634f1..ab3a63c98 100644 --- a/.github/workflows/ci-backend.yml +++ b/.github/workflows/ci-backend.yml @@ -165,6 +165,7 @@ jobs: contents: read env: DEFAULT_PYTHON: "3.12" + PAPERLESS_SECRET_KEY: "ci-typing-not-a-real-secret" steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/ci-release.yml b/.github/workflows/ci-release.yml index 4dbeada1b..001d763f8 100644 --- a/.github/workflows/ci-release.yml +++ b/.github/workflows/ci-release.yml @@ -88,6 +88,7 @@ jobs: uv export --quiet --no-dev --all-extras --format requirements-txt --output-file requirements.txt - name: Compile messages env: + PAPERLESS_SECRET_KEY: "ci-release-not-a-real-secret" PYTHON_VERSION: ${{ steps.setup-python.outputs.python-version }} run: | cd src/ @@ -96,6 +97,7 @@ jobs: manage.py compilemessages - name: Collect static files env: + PAPERLESS_SECRET_KEY: "ci-release-not-a-real-secret" PYTHON_VERSION: ${{ steps.setup-python.outputs.python-version }} run: | cd src/ diff --git a/.github/workflows/translate-strings.yml b/.github/workflows/translate-strings.yml index de8bbca45..65cb41c66 100644 --- a/.github/workflows/translate-strings.yml +++ b/.github/workflows/translate-strings.yml @@ -36,6 +36,8 @@ jobs: --group dev \ --frozen - name: Generate backend translation strings + env: + PAPERLESS_SECRET_KEY: "ci-translate-not-a-real-secret" run: cd src/ && uv run manage.py makemessages -l en_US -i "samples*" - name: Install pnpm uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0 diff --git a/.gitignore b/.gitignore index da74df3cf..d4b1403a6 100644 --- a/.gitignore +++ b/.gitignore @@ -79,6 +79,7 @@ virtualenv /docker-compose.env /docker-compose.yml .ruff_cache/ +.mypy_cache/ # Used for development scripts/import-for-development @@ -111,4 +112,6 @@ celerybeat-schedule* # ignore pnpm package store folder created when setting up the devcontainer .pnpm-store/ + +# Git worktree local folder .worktrees diff --git a/.mypy-baseline.txt b/.mypy-baseline.txt index 61ffe9c10..2a560ebf1 100644 --- a/.mypy-baseline.txt +++ b/.mypy-baseline.txt @@ -12,44 +12,45 @@ src/documents/admin.py:0: error: Function is missing a type annotation [no-unty src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/admin.py:0: error: Missing type parameters for generic type "ModelAdmin" [type-arg] -src/documents/admin.py:0: error: Missing type parameters for generic type "TabularInline" [type-arg] -src/documents/admin.py:0: error: Missing type parameters for generic type "TabularInline" [type-arg] +src/documents/admin.py:0: error: Missing type arguments for generic type "ModelAdmin" [type-arg] +src/documents/admin.py:0: error: Missing type arguments for generic type "TabularInline" [type-arg] +src/documents/admin.py:0: error: Missing type arguments for generic type "TabularInline" [type-arg] src/documents/admin.py:0: error: Skipping analyzing "auditlog.admin": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/admin.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/admin.py:0: error: Skipping analyzing "treenode.admin": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/barcodes.py:0: error: "Image" has no attribute "filename" [attr-defined] src/documents/barcodes.py:0: error: Cannot find implementation or library stub for module named "zxingcpp" [import-not-found] +src/documents/barcodes.py:0: error: Library stubs not installed for "regex" [import-untyped] src/documents/bulk_download.py:0: error: Return type "None" of "add_document" incompatible with return type "Never" in supertype "BulkArchiveStrategy" [override] src/documents/bulk_download.py:0: error: Return type "None" of "add_document" incompatible with return type "Never" in supertype "BulkArchiveStrategy" [override] src/documents/bulk_download.py:0: error: Return type "None" of "add_document" incompatible with return type "Never" in supertype "BulkArchiveStrategy" [override] src/documents/bulk_edit.py:0: error: "int" object is not iterable [misc] src/documents/bulk_edit.py:0: error: "int" object is not iterable [misc] -src/documents/bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/bulk_edit.py:0: error: Incompatible return value type (got "Literal['ERROR']", expected "Literal['OK']") [return-value] src/documents/bulk_edit.py:0: error: Incompatible type for lookup 'id': (got "Correspondent", expected "str | int") [misc] src/documents/bulk_edit.py:0: error: Incompatible type for lookup 'id': (got "DocumentType", expected "str | int") [misc] src/documents/bulk_edit.py:0: error: Incompatible type for lookup 'id': (got "StoragePath", expected "str | int") [misc] -src/documents/bulk_edit.py:0: error: Incompatible types in assignment (expression has type "dict_items[Any, Any] | list[tuple[int, None]]", variable has type "list[int] | dict[Any, Any]") [assignment] +src/documents/bulk_edit.py:0: error: Incompatible types in assignment (expression has type "dict_items[Any, Any] | list[int]", variable has type "list[int] | dict[Any, Any]") [assignment] src/documents/bulk_edit.py:0: error: Invalid index type "str" for "dict[FieldDataType, str]"; expected type "FieldDataType" [index] src/documents/bulk_edit.py:0: error: List comprehension has incompatible type List[tuple[int, None]]; expected List[int] [misc] src/documents/bulk_edit.py:0: error: Missing named argument "p" for "remove" of "PageList" [call-arg] -src/documents/bulk_edit.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/bulk_edit.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/bulk_edit.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/bulk_edit.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/documents/bulk_edit.py:0: error: Need type annotation for "to_create" (hint: "to_create: list[] = ...") [var-annotated] src/documents/caching.py:0: error: Argument 1 to "hexlify" has incompatible type "bytes | None"; expected "Buffer" [arg-type] -src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/caching.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/caching.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/caching.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/caching.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/caching.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/caching.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/caching.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/caching.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/caching.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/caching.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/caching.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/documents/caching.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/documents/caching.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/documents/caching.py:0: error: Missing type arguments for generic type "list" [type-arg] src/documents/caching.py:0: error: Need type annotation for "_data" [var-annotated] src/documents/checks.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/checks.py:0: error: Function is missing a type annotation [no-untyped-def] @@ -68,8 +69,8 @@ src/documents/classifier.py:0: error: Function is missing a return type annotati src/documents/classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "CountVectorizer", variable has type "None") [assignment] src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "LabelBinarizer", variable has type "None") [assignment] src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "MLPClassifier", variable has type "None") [assignment] @@ -90,12 +91,12 @@ src/documents/classifier.py:0: error: Skipping analyzing "nltk.corpus": module i src/documents/classifier.py:0: error: Skipping analyzing "nltk.stem": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/classifier.py:0: error: Skipping analyzing "nltk.tokenize": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/classifier.py:0: error: Unsupported right operand type for in ("None") [operator] -src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "input_doc" [attr-defined] src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "metadata" [attr-defined] src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "metadata" [attr-defined] @@ -107,22 +108,22 @@ src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "rene src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "status_mgr" [attr-defined] src/documents/consumer.py:0: error: "None" not callable [misc] src/documents/consumer.py:0: error: "None" object is not iterable [misc] -src/documents/consumer.py:0: error: "get_page_count" of "DocumentParser" does not return a value (it only ever returns None) [func-returns-value] src/documents/consumer.py:0: error: Argument "data_type" to "get_value_field_name" of "CustomFieldInstance" has incompatible type "str"; expected "FieldDataType" [arg-type] src/documents/consumer.py:0: error: Argument "logger" to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] -src/documents/consumer.py:0: error: Argument "text" to "_store" of "ConsumerPlugin" has incompatible type "Any | None"; expected "str" [arg-type] +src/documents/consumer.py:0: error: Argument "text" to "_store" of "ConsumerPlugin" has incompatible type "str | Any | None"; expected "str" [arg-type] +src/documents/consumer.py:0: error: Argument 1 to "compute_checksum" has incompatible type "Path | None"; expected "Path" [arg-type] src/documents/consumer.py:0: error: Argument 1 to "create_source_path_directory" has incompatible type "Path | None"; expected "Path" [arg-type] +src/documents/consumer.py:0: error: Argument 2 to "parse" of "DateParserPluginBase" has incompatible type "str | Any | None"; expected "str" [arg-type] src/documents/consumer.py:0: error: Argument 2 to "parse_w_workflow_placeholders" has incompatible type "str | None"; expected "str" [arg-type] src/documents/consumer.py:0: error: Argument 3 to "parse_w_workflow_placeholders" has incompatible type "str | None"; expected "str" [arg-type] src/documents/consumer.py:0: error: Argument 3 to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] src/documents/consumer.py:0: error: Argument 3 to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] src/documents/consumer.py:0: error: Argument 4 to "parse_w_workflow_placeholders" has incompatible type "str | None"; expected "str" [arg-type] +src/documents/consumer.py:0: error: Argument 4 to "should_produce_archive" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] src/documents/consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "deleted_at" [union-attr] src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "filename" [union-attr] src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "original_filename" [union-attr] @@ -135,17 +136,21 @@ src/documents/context_processors.py:0: error: Function is missing a type annotat src/documents/converters.py:0: error: List item 3 has incompatible type "Path"; expected "str" [list-item] src/documents/converters.py:0: error: List item 4 has incompatible type "Path"; expected "str" [list-item] src/documents/converters.py:0: error: Skipping analyzing "img2pdf": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/data_models.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/data_models.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/data_models.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "str") [assignment] src/documents/data_models.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "__iter__" (not iterable) [union-attr] src/documents/data_models.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "__iter__" (not iterable) [union-attr] src/documents/data_models.py:0: error: Item "list[str]" of "Any | list[str]" has no attribute "values_list" [union-attr] src/documents/data_models.py:0: error: Item "list[str]" of "Any | list[str]" has no attribute "values_list" [union-attr] -src/documents/data_models.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/data_models.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/documents/data_models.py:0: error: Value of type "Group | dict[Any, Any]" is not indexable [index] src/documents/data_models.py:0: error: Value of type "Group | dict[Any, Any]" is not indexable [index] -src/documents/file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/file_handling.py:0: error: Argument 1 to "format_filename" has incompatible type "Document | None"; expected "Document" [arg-type] +src/documents/file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/file_handling.py:0: error: Item "None" of "Document | None" has no attribute "pk" [union-attr] +src/documents/file_handling.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/file_handling.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] src/documents/filters.py:0: error: "SharedByUser" has no attribute "model" [attr-defined] src/documents/filters.py:0: error: "def wrapper(*args: Any, validation_prefix: Any = ..., **kwargs: Any) -> Any" has no attribute "__signature__" [attr-defined] src/documents/filters.py:0: error: "type[Model]" has no attribute "objects" [attr-defined] @@ -171,14 +176,14 @@ src/documents/filters.py:0: error: Function is missing a type annotation [no-un src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "CharField", variable has type "BooleanField | None") [assignment] src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "Field[Any, Any, Any, Any]", variable has type "BooleanField | None") [assignment] src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "IntegerField", variable has type "BooleanField | None") [assignment] @@ -191,83 +196,46 @@ src/documents/filters.py:0: error: Incompatible types in assignment (expression src/documents/filters.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/documents/filters.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/documents/filters.py:0: error: Item "None" of "BooleanField | None" has no attribute "allow_null" [union-attr] -src/documents/filters.py:0: error: Missing type parameters for generic type "Callable" [type-arg] +src/documents/filters.py:0: error: Missing type arguments for generic type "Callable" [type-arg] src/documents/filters.py:0: error: Need type annotation for "_annotations" (hint: "_annotations: dict[, ] = ...") [var-annotated] src/documents/filters.py:0: error: Need type annotation for "_model_serializer" [var-annotated] src/documents/filters.py:0: error: Skipping analyzing "rest_framework_guardian.filters": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/filters.py:0: error: Value of type "Any | None" is not indexable [index] -src/documents/index.py:0: error: "ManualResults" has no attribute "formatter" [attr-defined] -src/documents/index.py:0: error: "ManualResults" has no attribute "fragmenter" [attr-defined] -src/documents/index.py:0: error: "ManualResults" has no attribute "top_n" [attr-defined] -src/documents/index.py:0: error: "ManualResults" has no attribute "top_n" [attr-defined] -src/documents/index.py:0: error: Argument 1 to "len" has incompatible type "ManualResults"; expected "Sized" [arg-type] -src/documents/index.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/index.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/index.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/index.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/index.py:0: error: Item "str" of "Any | str" has no attribute "id" [union-attr] -src/documents/index.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "set" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "tuple" [type-arg] -src/documents/index.py:0: error: Missing type parameters for generic type "tuple" [type-arg] -src/documents/index.py:0: error: Name "page" already defined on line 0 [no-redef] -src/documents/index.py:0: error: Need type annotation for "saved_results" (hint: "saved_results: dict[, ] = ...") [var-annotated] -src/documents/index.py:0: error: Need type annotation for "termCounts" [var-annotated] -src/documents/index.py:0: error: Skipping analyzing "whoosh": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.fields": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.highlight": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.idsets": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.index": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.qparser": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.qparser.dateparse": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.qparser.plugins": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.reading": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.scoring": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.searching": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.util.times": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Skipping analyzing "whoosh.writing": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/index.py:0: error: Value of type "ManualResults" is not indexable [index] src/documents/loggers.py:0: error: "LoggingMixin" has no attribute "logging_name" [attr-defined] src/documents/mail.py:0: error: Incompatible types in assignment (expression has type "Message[str, str]", variable has type "bytes") [assignment] src/documents/management/commands/convert_mariadb_uuid.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/convert_mariadb_uuid.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/convert_mariadb_uuid.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/management/commands/convert_mariadb_uuid.py:0: error: Need type annotation for "new_field" [var-annotated] src/documents/management/commands/convert_mariadb_uuid.py:0: error: Need type annotation for "old_field" [var-annotated] src/documents/management/commands/document_archiver.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/management/commands/document_archiver.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/management/commands/document_consumer.py:0: error: "str" has no attribute "is_file" [attr-defined] src/documents/management/commands/document_consumer.py:0: error: Argument 1 to "track" of "FileStabilityTracker" has incompatible type "str"; expected "Path" [arg-type] -src/documents/management/commands/document_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/management/commands/document_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/management/commands/document_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/management/commands/document_consumer.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "str") [assignment] -src/documents/management/commands/document_create_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_create_classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/management/commands/document_exporter.py:0: error: "None" has no attribute "write" [attr-defined] +src/documents/management/commands/document_exporter.py:0: error: "None" has no attribute "write" [attr-defined] +src/documents/management/commands/document_exporter.py:0: error: "None" has no attribute "write" [attr-defined] src/documents/management/commands/document_exporter.py:0: error: Argument 1 to "add" of "set" has incompatible type "Path"; expected "str" [arg-type] -src/documents/management/commands/document_exporter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/management/commands/document_exporter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_exporter.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/management/commands/document_exporter.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/management/commands/document_exporter.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/management/commands/document_exporter.py:0: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "None") [assignment] src/documents/management/commands/document_exporter.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "Path") [assignment] -src/documents/management/commands/document_exporter.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/management/commands/document_exporter.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/management/commands/document_exporter.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] -src/documents/management/commands/document_exporter.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/management/commands/document_exporter.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/management/commands/document_exporter.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/documents/management/commands/document_exporter.py:0: error: Skipping analyzing "allauth.mfa.models": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/management/commands/document_exporter.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/management/commands/document_exporter.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] @@ -276,47 +244,35 @@ src/documents/management/commands/document_fuzzy_match.py:0: error: Function is src/documents/management/commands/document_importer.py:0: error: Argument 1 to "create_source_path_directory" has incompatible type "Path | None"; expected "Path" [arg-type] src/documents/management/commands/document_importer.py:0: error: Argument 2 to "copy_file_with_basic_stats" has incompatible type "Path | None"; expected "Path | str" [arg-type] src/documents/management/commands/document_importer.py:0: error: Attribute "version" already defined on line 0 [no-redef] -src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/management/commands/document_importer.py:0: error: Incompatible types in assignment (expression has type "str | None", base class "CryptMixin" defined the type as "str") [assignment] -src/documents/management/commands/document_importer.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/management/commands/document_importer.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/management/commands/document_importer.py:0: error: Missing type parameters for generic type "Generator" [type-arg] -src/documents/management/commands/document_importer.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/management/commands/document_importer.py:0: error: Missing type arguments for generic type "Generator" [type-arg] +src/documents/management/commands/document_importer.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_importer.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_importer.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/management/commands/document_importer.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/documents/management/commands/document_importer.py:0: error: Need type annotation for "manifest_paths" (hint: "manifest_paths: list[] = ...") [var-annotated] src/documents/management/commands/document_importer.py:0: error: Skipping analyzing "auditlog.registry": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/management/commands/document_importer.py:0: error: Skipping analyzing "ijson": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/management/commands/document_index.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/management/commands/document_index.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/document_llmindex.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/document_llmindex.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/management/commands/document_renamer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/document_renamer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/document_retagger.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/document_retagger.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/document_sanity_checker.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/document_sanity_checker.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_retagger.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/management/commands/document_retagger.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/management/commands/document_thumbnails.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/document_thumbnails.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/management/commands/document_thumbnails.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/management/commands/loaddata_stdin.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/loaddata_stdin.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/loaddata_stdin.py:0: error: Incompatible types in assignment (expression has type "tuple[Callable[[Any, Any], TextIO | Any], None]", target has type "tuple[Callable[[str, Literal['r', 'rb']], BufferedReader[_BufferedReaderStream]]]") [assignment] +src/documents/management/commands/document_thumbnails.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/management/commands/manage_superuser.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/management/commands/manage_superuser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/manage_superuser.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/management/commands/mixins.py:0: error: Attribute "kdf_algorithm" already defined on line 0 [no-redef] src/documents/management/commands/mixins.py:0: error: Attribute "key_iterations" already defined on line 0 [no-redef] src/documents/management/commands/mixins.py:0: error: Attribute "key_size" already defined on line 0 [no-redef] -src/documents/management/commands/mixins.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/management/commands/mixins.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/management/commands/mixins.py:0: error: Incompatible types in assignment (expression has type "list[dict[str, Sequence[str]]]", variable has type "CryptFields") [assignment] -src/documents/management/commands/mixins.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/management/commands/mixins.py:0: error: Unsupported operand types for // ("None" and "int") [operator] -src/documents/management/commands/prune_audit_logs.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/mixins.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/documents/management/commands/prune_audit_logs.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/management/commands/prune_audit_logs.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/matching.py:0: error: Argument 1 to "existing_document_matches_workflow" has incompatible type "ConsumableDocument | Document"; expected "Document" [arg-type] -src/documents/matching.py:0: error: Argument 1 to "issubset" of "set" has incompatible type "set[int] | None"; expected "Iterable[Any]" [arg-type] +src/documents/matching.py:0: error: Argument 1 to "issubset" of "set" has incompatible type "set[int] | None"; expected "Iterable[object]" [arg-type] src/documents/matching.py:0: error: Argument 1 to "matches" has incompatible type "WorkflowTrigger"; expected "MatchingModel" [arg-type] src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] @@ -324,10 +280,10 @@ src/documents/matching.py:0: error: Function is missing a return type annotation src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/matching.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/matching.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] src/documents/matching.py:0: error: Incompatible types in assignment (expression has type "tuple[str]", variable has type "str") [assignment] src/documents/matching.py:0: error: Incompatible types in assignment (expression has type "tuple[str]", variable has type "str") [assignment] @@ -336,14 +292,18 @@ src/documents/matching.py:0: error: Incompatible types in assignment (expression src/documents/matching.py:0: error: Unsupported left operand type for & ("None") [operator] src/documents/matching.py:0: error: Unsupported left operand type for & ("None") [operator] src/documents/matching.py:0: error: Value of type variable "AnyStr" of "fnmatch" cannot be "object" [type-var] -src/documents/migrations/0001_initial.py:0: error: Skipping analyzing "multiselectfield": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/migrations/0001_initial.py:0: error: Skipping analyzing "multiselectfield.db": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/migrations/0001_initial.py:0: error: Skipping analyzing "multiselectfield.db.fields": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/migrations/0008_sharelinkbundle.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/migrations/0008_sharelinkbundle.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/migrations/0012_savedview_visibility_to_ui_settings.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/migrations/0012_savedview_visibility_to_ui_settings.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/migrations/0012_savedview_visibility_to_ui_settings.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/migrations/0001_squashed.py:0: error: Skipping analyzing "multiselectfield": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/migrations/0001_squashed.py:0: error: Skipping analyzing "multiselectfield.db": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/migrations/0001_squashed.py:0: error: Skipping analyzing "multiselectfield.db.fields": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/migrations/0007_sharelinkbundle.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/migrations/0007_sharelinkbundle.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/migrations/0014_savedview_visibility_to_ui_settings.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/migrations/0014_savedview_visibility_to_ui_settings.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/migrations/0014_savedview_visibility_to_ui_settings.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/migrations/0016_sha256_checksums.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/migrations/0016_sha256_checksums.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/documents/migrations/0017_migrate_fulltext_query_field_prefixes.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/migrations/0018_saved_view_simple_search_rules.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/models.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] src/documents/models.py:0: error: Couldn't resolve related manager 'documents' for relation 'documents.models.Document.correspondent'. [django-manager-missing] src/documents/models.py:0: error: Couldn't resolve related manager 'documents' for relation 'documents.models.Document.document_type'. [django-manager-missing] @@ -371,8 +331,8 @@ src/documents/models.py:0: error: Function is missing a type annotation [no-unt src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/models.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/models.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/models.py:0: error: Need type annotation for "created" [var-annotated] src/documents/models.py:0: error: Need type annotation for "created" [var-annotated] src/documents/models.py:0: error: Need type annotation for "created" [var-annotated] @@ -410,25 +370,12 @@ src/documents/parsers.py:0: error: Function is missing a return type annotation src/documents/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/parsers.py:0: error: Incompatible return value type (got "str | Any", expected "type[DocumentParser] | None") [return-value] -src/documents/parsers.py:0: error: Invalid index type "str | Any" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] -src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] -src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] -src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] -src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] -src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] @@ -437,32 +384,57 @@ src/documents/permissions.py:0: error: Function is missing a type annotation [n src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/permissions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/permissions.py:0: error: Item "list[str]" of "Any | list[str] | QuerySet[User, User]" has no attribute "exclude" [union-attr] src/documents/permissions.py:0: error: Item "list[str]" of "Any | list[str] | QuerySet[User, User]" has no attribute "exists" [union-attr] src/documents/permissions.py:0: error: Item "list[str]" of "Any | list[str] | QuerySet[User, User]" has no attribute "exists" [union-attr] -src/documents/permissions.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] -src/documents/permissions.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/plugins/helpers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/plugins/helpers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] +src/documents/permissions.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/plugins/date_parsing/regex_parser.py:0: error: Library stubs not installed for "regex" [import-untyped] src/documents/plugins/helpers.py:0: error: Skipping analyzing "channels_redis.pubsub": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/regex.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/regex.py:0: error: Library stubs not installed for "regex" [import-untyped] -src/documents/sanity_checker.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] -src/documents/sanity_checker.py:0: error: Cannot use Final inside a loop [misc] -src/documents/sanity_checker.py:0: error: Cannot use Final inside a loop [misc] -src/documents/sanity_checker.py:0: error: Cannot use Final inside a loop [misc] -src/documents/sanity_checker.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/sanity_checker.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/sanity_checker.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/sanity_checker.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/sanity_checker.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/sanity_checker.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] src/documents/sanity_checker.py:0: error: Incompatible type for "task_id" of "PaperlessTask" (got "UUID", expected "str | int | Combinable") [misc] -src/documents/sanity_checker.py:0: error: Missing type parameters for generic type "dict" [type-arg] src/documents/schema.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/schema.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/schema.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/search/_backend.py:0: error: "AbstractBaseUser" has no attribute "is_superuser" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "acquire" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "add_document" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "commit" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "delete_documents_by_query" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "reload" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "schema" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "searcher" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "searcher" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "searcher" [attr-defined] +src/documents/search/_backend.py:0: error: "None" has no attribute "writer" [attr-defined] +src/documents/search/_backend.py:0: error: Argument 1 to "build_permission_filter" has incompatible type "None"; expected "Schema" [arg-type] +src/documents/search/_backend.py:0: error: Argument 1 to "build_permission_filter" has incompatible type "None"; expected "Schema" [arg-type] +src/documents/search/_backend.py:0: error: Argument 1 to "build_permission_filter" has incompatible type "None"; expected "Schema" [arg-type] +src/documents/search/_backend.py:0: error: Argument 1 to "parse_simple_text_query" has incompatible type "None"; expected "Index" [arg-type] +src/documents/search/_backend.py:0: error: Argument 1 to "parse_simple_title_query" has incompatible type "None"; expected "Index" [arg-type] +src/documents/search/_backend.py:0: error: Argument 1 to "parse_user_query" has incompatible type "None"; expected "Index" [arg-type] +src/documents/search/_backend.py:0: error: Argument 1 to "range_query" of "Query" has incompatible type "None"; expected "Schema" [arg-type] +src/documents/search/_backend.py:0: error: Argument 1 to "range_query" of "Query" has incompatible type "None"; expected "Schema" [arg-type] +src/documents/search/_backend.py:0: error: Argument 1 to "register_tokenizers" has incompatible type "None"; expected "Index" [arg-type] +src/documents/search/_backend.py:0: error: Argument 2 to "add_unsigned" of "Document" has incompatible type "int | None"; expected "int" [arg-type] +src/documents/search/_backend.py:0: error: Argument 2 to "add_unsigned" of "Document" has incompatible type "int | None"; expected "int" [arg-type] +src/documents/search/_backend.py:0: error: Argument 2 to "add_unsigned" of "Document" has incompatible type "int | None"; expected "int" [arg-type] +src/documents/search/_backend.py:0: error: Argument 3 to "create" of "SnippetGenerator" has incompatible type "None"; expected "Schema" [arg-type] +src/documents/search/_backend.py:0: error: Argument 3 to "create" of "SnippetGenerator" has incompatible type "None"; expected "Schema" [arg-type] +src/documents/search/_backend.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/search/_backend.py:0: error: Incompatible types in assignment (expression has type "Index", variable has type "None") [assignment] +src/documents/search/_backend.py:0: error: Incompatible types in assignment (expression has type "Index", variable has type "None") [assignment] +src/documents/search/_backend.py:0: error: Incompatible types in assignment (expression has type "Index", variable has type "None") [assignment] +src/documents/search/_backend.py:0: error: Incompatible types in assignment (expression has type "Schema", variable has type "None") [assignment] +src/documents/search/_backend.py:0: error: Incompatible types in assignment (expression has type "SoftFileLock", variable has type "None") [assignment] +src/documents/search/_backend.py:0: error: Item "str" of "Any | str" has no attribute "pk" [union-attr] +src/documents/search/_backend.py:0: error: Library stubs not installed for "regex" [import-untyped] +src/documents/search/_query.py:0: error: Argument 3 to "regex_phrase_query" of "Query" has incompatible type "list[str]"; expected "list[str | tuple[int, str]]" [arg-type] +src/documents/search/_query.py:0: error: Library stubs not installed for "regex" [import-untyped] src/documents/serialisers.py:0: error: "type[_MT?]" has no attribute "objects" [attr-defined] src/documents/serialisers.py:0: error: "type[_MT?]" has no attribute "objects" [attr-defined] src/documents/serialisers.py:0: error: "type[_MT?]" has no attribute "objects" [attr-defined] @@ -470,12 +442,8 @@ src/documents/serialisers.py:0: error: Argument "choices" to "ChoiceField" has i src/documents/serialisers.py:0: error: Argument "default" to "MultipleChoiceField" has incompatible type "set[DocumentSource]"; expected "set[str | int] | set[str] | set[int] | Callable[[], set[str | int] | set[str] | set[int]] | _Empty | None" [arg-type] src/documents/serialisers.py:0: error: Argument 1 of "get_value" is incompatible with supertype "rest_framework.fields.Field"; supertype defines the argument type as "Mapping[Any, Any]" [override] src/documents/serialisers.py:0: error: Argument 1 to "get_value_field_name" of "CustomFieldInstance" has incompatible type "str"; expected "FieldDataType" [arg-type] -src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Sequence[str]"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] -src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Sequence[str]"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] -src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Sequence[str]"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] -src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Sequence[str]"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] -src/documents/serialisers.py:0: error: Argument 1 to "len" has incompatible type "list[Any] | None"; expected "Sized" [arg-type] -src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Collection[str]"; expected "str | Buffer | SupportsInt | SupportsIndex" [arg-type] +src/documents/serialisers.py:0: error: Expected iterable as variadic argument [misc] src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] @@ -551,44 +519,45 @@ src/documents/serialisers.py:0: error: Function is missing a type annotation [n src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/serialisers.py:0: error: Incompatible type for lookup 'pk': (got "str | None", expected "str | int") [misc] src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "PrimaryKeyRelatedField[Tag]", base class "Field" defined the type as "BaseSerializer[Any]") [assignment] src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "Sequence[str] | tuple[Lower]", variable has type "Sequence[str] | None") [assignment] @@ -601,9 +570,8 @@ src/documents/serialisers.py:0: error: Item "Field[Any, Any, Any, Any]" of "Fiel src/documents/serialisers.py:0: error: Item "Field[Any, Any, Any, Any]" of "Field[Any, Any, Any, Any] | None" has no attribute "get_shared_object_pks" [union-attr] src/documents/serialisers.py:0: error: Item "Field[Any, Any, Any, Any]" of "Field[Any, Any, Any, Any] | None" has no attribute "get_shared_object_pks" [union-attr] src/documents/serialisers.py:0: error: Item "None" of "Any | None" has no attribute "name" [union-attr] -src/documents/serialisers.py:0: error: Item "None" of "Any | None" has no attribute "name" [union-attr] src/documents/serialisers.py:0: error: Item "None" of "Any | None" has no attribute "pk" [union-attr] -src/documents/serialisers.py:0: error: Item "None" of "Any | None" has no attribute "version" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "CustomField | None" has no attribute "name" [union-attr] src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "context" [union-attr] src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "context" [union-attr] src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "context" [union-attr] @@ -613,37 +581,17 @@ src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] src/documents/serialisers.py:0: error: Item "None" of "Match[str] | None" has no attribute "group" [union-attr] src/documents/serialisers.py:0: error: Item "None" of "ObjectPermissionChecker | None" has no attribute "has_perm" [union-attr] src/documents/serialisers.py:0: error: Item "list[str]" of "Any | list[str]" has no attribute "values_list" [union-attr] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Field" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Iterable" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ListSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ListSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/serialisers.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Field" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Iterable" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/serialisers.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/documents/serialisers.py:0: error: Need type annotation for "document" [var-annotated] src/documents/serialisers.py:0: error: Need type annotation for "documents" [var-annotated] src/documents/serialisers.py:0: error: Need type annotation for "permissions_dict" [var-annotated] @@ -666,33 +614,26 @@ src/documents/signals/handlers.py:0: error: Argument 2 to "match_storage_paths" src/documents/signals/handlers.py:0: error: Argument 2 to "match_tags" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] src/documents/signals/handlers.py:0: error: Argument 2 to "validate_move" has incompatible type "Path | Any | None"; expected "Path" [arg-type] src/documents/signals/handlers.py:0: error: Argument 3 to "validate_move" has incompatible type "Path | Any | None"; expected "Path" [arg-type] -src/documents/signals/handlers.py:0: error: Argument 5 to "_suggestion_printer" has incompatible type "Any | None"; expected "MatchingModel" [arg-type] -src/documents/signals/handlers.py:0: error: Argument 5 to "_suggestion_printer" has incompatible type "Any | None"; expected "MatchingModel" [arg-type] -src/documents/signals/handlers.py:0: error: Argument 5 to "_suggestion_printer" has incompatible type "Any | None"; expected "MatchingModel" [arg-type] src/documents/signals/handlers.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/signals/handlers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/signals/handlers.py:0: error: Incompatible types in assignment (expression has type "list[Tag]", variable has type "set[Tag]") [assignment] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/signals/handlers.py:0: error: Incompatible types in assignment (expression has type "Any | None", target has type "datetime") [assignment] +src/documents/signals/handlers.py:0: error: Incompatible types in assignment (expression has type "str", target has type "datetime") [assignment] src/documents/signals/handlers.py:0: error: Incompatible types in assignment (expression has type "tuple[Any, Any, Any]", variable has type "tuple[Any, Any]") [assignment] src/documents/signals/handlers.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "save" [union-attr] src/documents/signals/handlers.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "source_path" [union-attr] @@ -703,41 +644,41 @@ src/documents/signals/handlers.py:0: error: Item "None" of "Any | None" has no a src/documents/signals/handlers.py:0: error: Item "None" of "Any | None" has no attribute "remove" [union-attr] src/documents/signals/handlers.py:0: error: Item "None" of "Path | Any | None" has no attribute "is_file" [union-attr] src/documents/signals/handlers.py:0: error: Item "None" of "Path | Any | None" has no attribute "is_file" [union-attr] +src/documents/signals/handlers.py:0: error: Item "None" of "Path | Any | None" has no attribute "is_file" [union-attr] src/documents/signals/handlers.py:0: error: Missing return statement [return] src/documents/signals/handlers.py:0: error: Unsupported right operand type for in ("Any | None") [operator] src/documents/signals/handlers.py:0: error: Unsupported target for indexed assignment ("Any | None") [index] src/documents/signals/handlers.py:0: error: Value of type variable "_StrPathT" of "move" cannot be "Path | Any | None" [type-var] src/documents/signals/handlers.py:0: error: Value of type variable "_StrPathT" of "move" cannot be "Path | Any | None" [type-var] +src/documents/tasks.py:0: error: Argument 1 to "compute_checksum" has incompatible type "Path | None"; expected "Path" [arg-type] src/documents/tasks.py:0: error: Argument 1 to "create_source_path_directory" has incompatible type "Path | None"; expected "Path" [arg-type] +src/documents/tasks.py:0: error: Argument 1 to "move" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] src/documents/tasks.py:0: error: Argument 4 to "ConsumeTaskPlugin" has incompatible type "str"; expected "Path" [arg-type] src/documents/tasks.py:0: error: Argument 5 to "ConsumeTaskPlugin" has incompatible type "str | None"; expected "str" [arg-type] src/documents/tasks.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tasks.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tasks.py:0: error: Incompatible type for "task_id" of "PaperlessTask" (got "UUID", expected "str | int | Combinable") [misc] src/documents/tasks.py:0: error: Incompatible type for "task_id" of "PaperlessTask" (got "UUID", expected "str | int | Combinable") [misc] src/documents/tasks.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "str") [assignment] src/documents/tasks.py:0: error: Incompatible types in assignment (expression has type "QuerySet[Document, Document]", variable has type "UnknownQuerySet[Document, Document]") [assignment] -src/documents/tasks.py:0: error: Incompatible types in assignment (expression has type "type[DocumentParser] | None", variable has type "type[DocumentParser]") [assignment] -src/documents/tasks.py:0: error: Missing type parameters for generic type "Task" [type-arg] -src/documents/tasks.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/tasks.py:0: error: Missing type arguments for generic type "Task" [type-arg] +src/documents/tasks.py:0: error: Missing type arguments for generic type "list" [type-arg] src/documents/tasks.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/tasks.py:0: error: Skipping analyzing "whoosh.writing": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/tasks.py:0: error: Value of type variable "_StrPathT" of "move" cannot be "Path | None" [type-var] src/documents/templating/environment.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/templating/environment.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/templating/filepath.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/templating/filepath.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/templating/filepath.py:0: error: Incompatible types in assignment (expression has type "QuerySet[Tag, Tag]", variable has type "list[Tag]") [assignment] src/documents/templating/filepath.py:0: error: Need type annotation for "field_data" [var-annotated] src/documents/templating/filters.py:0: error: Incompatible types in assignment (expression has type "date | None", variable has type "str | datetime") [assignment] @@ -747,17 +688,155 @@ src/documents/templating/utils.py:0: error: Function is missing a type annotatio src/documents/templating/workflows.py:0: error: Incompatible return value type (got "None", expected "str") [return-value] src/documents/tests/conftest.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/conftest.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/tests/factories.py:0: error: Missing type parameters for generic type "DjangoModelFactory" [type-arg] -src/documents/tests/factories.py:0: error: Missing type parameters for generic type "DjangoModelFactory" [type-arg] +src/documents/tests/conftest.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/conftest.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/conftest.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/conftest.py:0: error: Incompatible return value type (got "DocumentFactory", expected "Document") [return-value] +src/documents/tests/factories.py:0: error: Missing type arguments for generic type "DjangoModelFactory" [type-arg] +src/documents/tests/factories.py:0: error: Missing type arguments for generic type "DjangoModelFactory" [type-arg] +src/documents/tests/factories.py:0: error: Missing type arguments for generic type "DjangoModelFactory" [type-arg] +src/documents/tests/factories.py:0: error: Missing type arguments for generic type "DjangoModelFactory" [type-arg] +src/documents/tests/factories.py:0: error: Missing type arguments for generic type "DjangoModelFactory" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Incompatible types in assignment (expression has type "StringIO", variable has type "OutputWrapper") [assignment] +src/documents/tests/management/test_management_base_cmd.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/documents/tests/management/test_management_base_cmd.py:0: error: Need type annotation for "result" [var-annotated] +src/documents/tests/management/test_management_base_cmd.py:0: error: Need type annotation for "result" (hint: "result: list[] = ...") [var-annotated] +src/documents/tests/management/test_management_base_cmd.py:0: error: Need type annotation for "results" [var-annotated] +src/documents/tests/management/test_management_sanity_checker.py:0: error: "DocumentFactory" has no attribute "source_path"; maybe "storage_path"? [attr-defined] +src/documents/tests/management/test_management_sanity_checker.py:0: error: "DocumentFactory" has no attribute "thumbnail_path" [attr-defined] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/search/test_backend.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/documents/tests/search/test_migration_fulltext_query_field_prefixes.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/documents/tests/search/test_query.py:0: error: "SearchResult" has no attribute "count" [attr-defined] +src/documents/tests/search/test_query.py:0: error: "SearchResult" has no attribute "count" [attr-defined] +src/documents/tests/search/test_query.py:0: error: "SearchResult" has no attribute "count" [attr-defined] +src/documents/tests/search/test_query.py:0: error: "SearchResult" has no attribute "count" [attr-defined] +src/documents/tests/search/test_query.py:0: error: "SearchResult" has no attribute "count" [attr-defined] +src/documents/tests/search/test_query.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/search/test_query.py:0: error: Unexpected attribute "pk" for model "AbstractBaseUser" [misc] +src/documents/tests/search/test_query.py:0: error: Unexpected attribute "pk" for model "AbstractBaseUser" [misc] +src/documents/tests/search/test_query.py:0: error: Unexpected attribute "pk" for model "AbstractBaseUser" [misc] +src/documents/tests/search/test_query.py:0: error: Unexpected attribute "pk" for model "AbstractBaseUser" [misc] +src/documents/tests/search/test_query.py:0: error: Unexpected attribute "pk" for model "AbstractBaseUser" [misc] +src/documents/tests/search/test_tokenizer.py:0: error: "SearchResult" has no attribute "count" [attr-defined] +src/documents/tests/search/test_tokenizer.py:0: error: "SearchResult" has no attribute "count" [attr-defined] +src/documents/tests/search/test_tokenizer.py:0: error: "SearchResult" has no attribute "count" [attr-defined] +src/documents/tests/test_admin.py:0: error: "None" has no attribute "searcher" [attr-defined] src/documents/tests/test_admin.py:0: error: "PaperlessUserForm" has no attribute "request" [attr-defined] src/documents/tests/test_admin.py:0: error: "PaperlessUserForm" has no attribute "request" [attr-defined] +src/documents/tests/test_admin.py:0: error: Argument 1 to "range_query" of "Query" has incompatible type "None"; expected "Schema" [arg-type] src/documents/tests/test_admin.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_admin.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_admin.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "datetime" [attr-defined] +src/documents/tests/test_api_app_config.py:0: error: "ImageFile" has no attribute "text" [attr-defined] src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "ai_enabled" [union-attr] src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_title" [union-attr] src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_title" [union-attr] src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "barcode_tag_mapping" [union-attr] @@ -776,38 +855,44 @@ src/documents/tests/test_api_app_config.py:0: error: Item "None" of "Application src/documents/tests/test_api_bulk_download.py:0: error: Value of type variable "_StrPathT" of "copy" cannot be "Path | None" [type-var] src/documents/tests/test_api_bulk_edit.py:0: error: "type[MatchingModel]" has no attribute "objects" [attr-defined] src/documents/tests/test_api_bulk_edit.py:0: error: "type[MatchingModel]" has no attribute "objects" [attr-defined] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_bulk_edit.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/tests/test_api_custom_fields.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_custom_fields.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] @@ -823,39 +908,46 @@ src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFi src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] -src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] -src/documents/tests/test_api_custom_fields.py:0: error: Value of type "Any | None" is not indexable [index] src/documents/tests/test_api_documents.py:0: error: "None" object is not iterable [misc] src/documents/tests/test_api_documents.py:0: error: "object" has no attribute "get" [attr-defined] src/documents/tests/test_api_documents.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_api_documents.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] src/documents/tests/test_api_documents.py:0: error: Argument 1 to "assertCountEqual" of "TestCase" has incompatible type "list[int] | None"; expected "Iterable[Any]" [arg-type] +src/documents/tests/test_api_documents.py:0: error: Argument 2 to "assertNotIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] +src/documents/tests/test_api_documents.py:0: error: Argument 2 to "assertNotIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] +src/documents/tests/test_api_documents.py:0: error: Argument 3 to "generic" of "APIClient" has incompatible type "bytes"; expected "str" [arg-type] +src/documents/tests/test_api_documents.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_api_documents.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_documents.py:0: error: Item "None" of "SavedViewFilterRule | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_documents.py:0: error: Value of type "Any | None" is not indexable [index] +src/documents/tests/test_api_documents.py:0: error: Value of type "Any | None" is not indexable [index] +src/documents/tests/test_api_documents.py:0: error: Value of type "Any | None" is not indexable [index] src/documents/tests/test_api_documents.py:0: error: Value of type "object" is not indexable [index] src/documents/tests/test_api_documents.py:0: error: Value of type "object" is not indexable [index] src/documents/tests/test_api_documents.py:0: error: Value of type variable "_StrPathT" of "copy" cannot be "Path | None" [type-var] src/documents/tests/test_api_documents.py:0: error: Value of type variable "_StrPathT" of "copy" cannot be "Path | None" [type-var] -src/documents/tests/test_api_email.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_email.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_email.py:0: error: Item "None" of "Path | None" has no attribute "stat" [union-attr] src/documents/tests/test_api_email.py:0: error: Value of type variable "_StrPathT" of "copy" cannot be "Path | None" [type-var] src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_filter_by_custom_fields.py:0: error: List item 1 has incompatible type "list[str]"; expected "str" [list-item] -src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Missing type arguments for generic type "list" [type-arg] src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Need type annotation for "documents" (hint: "documents: list[] = ...") [var-annotated] -src/documents/tests/test_api_objects.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_objects.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_objects.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_objects.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_permissions.py:0: error: Argument 2 to "get_perms" has incompatible type "Tag | None"; expected "Model" [arg-type] src/documents/tests/test_api_permissions.py:0: error: Argument 2 to "get_perms" has incompatible type "Tag | None"; expected "Model" [arg-type] src/documents/tests/test_api_permissions.py:0: error: Argument 2 to "has_perm" of "ObjectPermissionChecker" has incompatible type "Tag | None"; expected "Model" [arg-type] -src/documents/tests/test_api_permissions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_permissions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_permissions.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_api_permissions.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_permissions.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_permissions.py:0: error: Item "None" of "Tag | None" has no attribute "owner" [union-attr] src/documents/tests/test_api_permissions.py:0: error: Item "None" of "Tag | None" has no attribute "owner" [union-attr] src/documents/tests/test_api_permissions.py:0: error: Item "None" of "Tag | None" has no attribute "owner" [union-attr] @@ -868,27 +960,26 @@ src/documents/tests/test_api_profile.py:0: error: Function is missing a return t src/documents/tests/test_api_profile.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_profile.py:0: error: Item "None" of "Token | None" has no attribute "key" [union-attr] src/documents/tests/test_api_profile.py:0: error: Skipping analyzing "allauth.mfa.models": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/tests/test_api_profile.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_api_search.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_search.py:0: error: Need type annotation for "seen_ids" (hint: "seen_ids: list[] = ...") [var-annotated] -src/documents/tests/test_api_search.py:0: error: Skipping analyzing "whoosh.writing": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_api_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_api_tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_api_uisettings.py:0: error: Argument 1 to "assertDictEqual" of "TestCase" has incompatible type "Any | None"; expected "Mapping[Any, object]" [arg-type] src/documents/tests/test_api_workflows.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_api_workflows.py:0: error: Function is missing a return type annotation [no-untyped-def] @@ -967,20 +1058,26 @@ src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annot src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_bulk_edit.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] src/documents/tests/test_bulk_edit.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] src/documents/tests/test_bulk_edit.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] @@ -992,7 +1089,7 @@ src/documents/tests/test_bulk_edit.py:0: error: Item "dict[Any, Any]" of "Group src/documents/tests/test_bulk_edit.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] src/documents/tests/test_bulk_edit.py:0: error: Too few arguments for "count" of "list" [call-arg] src/documents/tests/test_bulk_edit.py:0: error: Too few arguments for "count" of "list" [call-arg] -src/documents/tests/test_caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_caching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_classifier.py:0: error: "None" has no attribute "classes_" [attr-defined] src/documents/tests/test_classifier.py:0: error: "None" has no attribute "classes_" [attr-defined] src/documents/tests/test_classifier.py:0: error: "None" has no attribute "transform" [attr-defined] @@ -1000,54 +1097,61 @@ src/documents/tests/test_classifier.py:0: error: Cannot assign to a method [met src/documents/tests/test_classifier.py:0: error: Cannot assign to a method [method-assign] src/documents/tests/test_classifier.py:0: error: Cannot assign to a method [method-assign] src/documents/tests/test_classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Invalid base class "real_catch_warnings" [misc] +src/documents/tests/test_classifier.py:0: error: Module "sklearn.exceptions" has no attribute "InconsistentVersionWarning" [attr-defined] +src/documents/tests/test_classifier.py:0: error: Variable "real_catch_warnings" is not valid as a type [valid-type] src/documents/tests/test_consumer.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | Any | None"; expected "PathLike[Any] | str" [arg-type] src/documents/tests/test_consumer.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | Any | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_consumer.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_consumer.py:0: error: Argument 1 to "len" has incompatible type "Any | None"; expected "Sized" [arg-type] +src/documents/tests/test_consumer.py:0: error: Argument 1 to "len" has incompatible type "Any | None"; expected "Sized" [arg-type] src/documents/tests/test_consumer.py:0: error: Argument 2 to "has_perm" of "ObjectPermissionChecker" has incompatible type "Document | None"; expected "Model" [arg-type] src/documents/tests/test_consumer.py:0: error: Argument 2 to "has_perm" of "ObjectPermissionChecker" has incompatible type "Document | None"; expected "Model" [arg-type] src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_consumer.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] -src/documents/tests/test_consumer.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] -src/documents/tests/test_consumer.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Incompatible return value type (got "Path | None", expected "Path") [return-value] src/documents/tests/test_consumer.py:0: error: Item "None" of "Correspondent | Any | None" has no attribute "id" [union-attr] src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_checksum" [union-attr] src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_filename" [union-attr] @@ -1107,14 +1211,18 @@ src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] src/documents/tests/test_consumer.py:0: error: Item "None" of "DocumentType | Any | None" has no attribute "id" [union-attr] src/documents/tests/test_consumer.py:0: error: Item "None" of "StoragePath | Any | None" has no attribute "id" [union-attr] -src/documents/tests/test_consumer.py:0: error: No overload variant of "copy" matches argument types "Any", "None" [call-overload] -src/documents/tests/test_delayedquery.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_delayedquery.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_delayedquery.py:0: error: Need type annotation for "tests" [var-annotated] -src/documents/tests/test_delayedquery.py:0: error: Skipping analyzing "whoosh": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_consumer.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/tests/test_consumer.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/documents/tests/test_consumer_archive.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer_archive.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer_archive.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer_archive.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer_archive.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_consumer_archive.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_double_sided.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/tests/test_double_sided.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_double_sided.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_double_sided.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_double_sided.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Any | None"; expected "str | PathLike[str]" [arg-type] src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Any | None"; expected "str | PathLike[str]" [arg-type] src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Any | None"; expected "str | PathLike[str]" [arg-type] src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] @@ -1134,16 +1242,21 @@ src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsNotFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsNotFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "create_source_path_directory" has incompatible type "Path | None"; expected "Path" [arg-type] src/documents/tests/test_file_handling.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Item "None" of "Path | None" has no attribute "write_bytes" [union-attr] src/documents/tests/test_file_handling.py:0: error: Skipping analyzing "auditlog.context": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/tests/test_filters.py:0: error: Argument 1 to "localize_date" has incompatible type "list[object] | dict[Any, Any] | Literal[1698330605] | None"; expected "date | datetime | str" [arg-type] src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] @@ -1151,41 +1264,60 @@ src/documents/tests/test_filters.py:0: error: Function is missing a return type src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/tests/test_index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_index.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "timezone" [attr-defined] src/documents/tests/test_management.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] src/documents/tests/test_management.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] src/documents/tests/test_management.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] src/documents/tests/test_management.py:0: error: Argument 1 to "assertIsNotFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] src/documents/tests/test_management.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_management.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/documents/tests/test_management_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management_consumer.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_management_exporter.py:0: error: Argument 1 to "call_command" has incompatible type "*list[object]"; expected "BaseCommand | str" [arg-type] src/documents/tests/test_management_exporter.py:0: error: Argument 1 to "call_command" has incompatible type "*list[object]"; expected "BaseCommand | str" [arg-type] src/documents/tests/test_management_exporter.py:0: error: Argument 1 to "call_command" has incompatible type "*list[object]"; expected "BaseCommand | str" [arg-type] src/documents/tests/test_management_exporter.py:0: error: Argument 1 to "call_command" has incompatible type "*list[object]"; expected "BaseCommand | str" [arg-type] src/documents/tests/test_management_exporter.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_management_exporter.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_management_exporter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management_exporter.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_management_exporter.py:0: error: Item "None" of "MailAccount | None" has no attribute "password" [union-attr] +src/documents/tests/test_management_exporter.py:0: error: Item "None" of "Path | None" has no attribute "read_bytes" [union-attr] src/documents/tests/test_management_exporter.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] src/documents/tests/test_management_fuzzy.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_management_retagger.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_management_retagger.py:0: error: "DocumentFactory" has no attribute "refresh_from_db" [attr-defined] +src/documents/tests/test_management_retagger.py:0: error: "DocumentFactory" has no attribute "refresh_from_db" [attr-defined] +src/documents/tests/test_management_retagger.py:0: error: "DocumentFactory" has no attribute "refresh_from_db" [attr-defined] +src/documents/tests/test_management_retagger.py:0: error: "DocumentFactory" has no attribute "tags" [attr-defined] +src/documents/tests/test_management_retagger.py:0: error: "DocumentFactory" has no attribute "tags" [attr-defined] +src/documents/tests/test_management_retagger.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_management_retagger.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_management_retagger.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_management_retagger.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_management_retagger.py:0: error: Incompatible return value type (got "tuple[CorrespondentFactory, CorrespondentFactory]", expected "tuple[Correspondent, Correspondent]") [return-value] +src/documents/tests/test_management_retagger.py:0: error: Incompatible return value type (got "tuple[DocumentFactory, DocumentFactory, DocumentFactory, DocumentFactory]", expected "tuple[Document, Document, Document, Document]") [return-value] +src/documents/tests/test_management_retagger.py:0: error: Incompatible return value type (got "tuple[DocumentTypeFactory, DocumentTypeFactory]", expected "tuple[DocumentType, DocumentType]") [return-value] +src/documents/tests/test_management_retagger.py:0: error: Incompatible return value type (got "tuple[StoragePathFactory, StoragePathFactory, StoragePathFactory]", expected "tuple[StoragePath, StoragePath, StoragePath]") [return-value] +src/documents/tests/test_management_retagger.py:0: error: Incompatible return value type (got "tuple[TagFactory, TagFactory, TagFactory, TagFactory, TagFactory]", expected "tuple[Tag, Tag, Tag, Tag, Tag]") [return-value] src/documents/tests/test_management_superuser.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_migration_saved_view_visibility.py:0: error: Cannot determine type of "apps" [has-type] src/documents/tests/test_migration_saved_view_visibility.py:0: error: Cannot determine type of "apps" [has-type] -src/documents/tests/test_migration_saved_view_visibility.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_migration_saved_view_visibility.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_migration_saved_view_visibility.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_migration_saved_view_visibility.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_migration_saved_view_visibility.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] src/documents/tests/test_migration_saved_view_visibility.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] src/documents/tests/test_migration_saved_view_visibility.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] src/documents/tests/test_migration_saved_view_visibility.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] -src/documents/tests/test_migration_share_link_bundle.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_migration_share_link_bundle.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_migration_sha256_checksums.py:0: error: "_fixture_teardown" undefined in superclass [misc] +src/documents/tests/test_migration_sha256_checksums.py:0: error: Cannot determine type of "apps" [has-type] +src/documents/tests/test_migration_sha256_checksums.py:0: error: Cannot determine type of "apps" [has-type] +src/documents/tests/test_migration_sha256_checksums.py:0: error: Cannot determine type of "apps" [has-type] +src/documents/tests/test_migration_sha256_checksums.py:0: error: Cannot determine type of "apps" [has-type] +src/documents/tests/test_migration_sha256_checksums.py:0: error: Cannot determine type of "apps" [has-type] +src/documents/tests/test_migration_sha256_checksums.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_migration_sha256_checksums.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/documents/tests/test_migration_sha256_checksums.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/documents/tests/test_migration_share_link_bundle.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_migration_share_link_bundle.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_migration_share_link_bundle.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] src/documents/tests/test_migration_share_link_bundle.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] src/documents/tests/test_migration_share_link_bundle.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] @@ -1195,18 +1327,30 @@ src/documents/tests/test_models.py:0: error: Item "None" of "Document | None" ha src/documents/tests/test_parsers.py:0: error: "None" not callable [misc] src/documents/tests/test_parsers.py:0: error: "None" not callable [misc] src/documents/tests/test_parsers.py:0: error: "None" not callable [misc] -src/documents/tests/test_parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_sanity_check.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/tests/test_sanity_check.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_sanity_check.py:0: error: Invalid index type "None" for "dict[int, list[dict[Any, Any]]]"; expected type "int" [index] +src/documents/tests/test_regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_regex.py:0: error: Library stubs not installed for "regex" [import-untyped] +src/documents/tests/test_sanity_check.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_sanity_check.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_sanity_check.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_sanity_check.py:0: error: Unsupported right operand type for in ("str | None") [operator] src/documents/tests/test_share_link_bundles.py:0: error: "_MonkeyPatchedResponse" has no attribute "streaming_content" [attr-defined] src/documents/tests/test_share_link_bundles.py:0: error: Argument 1 to "ZipFile" has incompatible type "Path | None"; expected "str | PathLike[str] | IO[bytes]" [arg-type] -src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Path | None" has no attribute "exists" [union-attr] @@ -1217,33 +1361,32 @@ src/documents/tests/test_tag_hierarchy.py:0: error: Argument 1 to "run_workflows src/documents/tests/test_tag_hierarchy.py:0: error: Argument 1 to "run_workflows" has incompatible type "int"; expected "WorkflowTriggerType" [arg-type] src/documents/tests/test_tag_hierarchy.py:0: error: Argument 2 to "get" of "APIClient" has incompatible type "dict[str, object]"; expected "Mapping[str, str | bytes | float | Iterable[str | bytes | float]] | Iterable[tuple[str, str | bytes | float | Iterable[str | bytes | float]]] | None" [arg-type] src/documents/tests/test_tag_hierarchy.py:0: error: Need type annotation for "context" (hint: "context: dict[, ] = ...") [var-annotated] +src/documents/tests/test_task_signals.py:0: error: "TestTaskSignalHandler" has no attribute "user" [attr-defined] +src/documents/tests/test_task_signals.py:0: error: "TestTaskSignalHandler" has no attribute "user" [attr-defined] +src/documents/tests/test_task_signals.py:0: error: "type[TestTaskSignalHandler]" has no attribute "user" [attr-defined] src/documents/tests/test_task_signals.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] src/documents/tests/test_task_signals.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] src/documents/tests/test_task_signals.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] src/documents/tests/test_task_signals.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] -src/documents/tests/test_task_signals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_task_signals.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_task_signals.py:0: error: Need type annotation for "body" [var-annotated] src/documents/tests/test_task_signals.py:0: error: Need type annotation for "body" [var-annotated] src/documents/tests/test_task_signals.py:0: error: Need type annotation for "body" [var-annotated] src/documents/tests/test_task_signals.py:0: error: Need type annotation for "body" [var-annotated] src/documents/tests/test_tasks.py:0: error: Argument 2 to "assertIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_views.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "render" [attr-defined] src/documents/tests/test_views.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "render" [attr-defined] src/documents/tests/test_views.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "url" [attr-defined] -src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] src/documents/tests/test_views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] src/documents/tests/test_views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] @@ -1281,6 +1424,7 @@ src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "Con src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Path | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "Path" has incompatible type "Any | None"; expected "str | PathLike[str]" [arg-type] src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] @@ -1337,20 +1481,21 @@ src/documents/tests/test_workflows.py:0: error: Function is missing a type annot src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/test_workflows.py:0: error: Incompatible types in assignment (expression has type "Any | list[str]", variable has type "QuerySet[Any, Any]") [assignment] src/documents/tests/test_workflows.py:0: error: Incompatible types in assignment (expression has type "Any | list[str]", variable has type "QuerySet[Any, Any]") [assignment] src/documents/tests/test_workflows.py:0: error: Incompatible types in assignment (expression has type "Group | dict[Any, Any]", variable has type "QuerySet[Any, Any]") [assignment] @@ -1442,11 +1587,11 @@ src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] src/documents/tests/test_workflows.py:0: error: Item "str" of "Any | str" has no attribute "name" [union-attr] -src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] -src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] -src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] -src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] -src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type arguments for generic type "QuerySet" [type-arg] src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] @@ -1457,7 +1602,6 @@ src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] -src/documents/tests/utils.py:0: error: "Collection[str]" has no attribute "update" [attr-defined] src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertEqual"; maybe "assertFilesEqual"? [attr-defined] src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertEqual"; maybe "assertFilesEqual"? [attr-defined] src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertFalse"; maybe "assertIsFile"? [attr-defined] @@ -1514,26 +1658,26 @@ src/documents/tests/utils.py:0: error: Function is missing a return type annotat src/documents/tests/utils.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/utils.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/tests/utils.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/tests/utils.py:0: error: Item "None" of "AppConfig | None" has no attribute "name" [union-attr] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "Callable" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "list" [type-arg] -src/documents/tests/utils.py:0: error: Missing type parameters for generic type "tuple" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "Callable" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/documents/tests/utils.py:0: error: Missing type arguments for generic type "tuple" [type-arg] src/documents/tests/utils.py:0: error: Need type annotation for "payloads" (hint: "payloads: list[] = ...") [var-annotated] src/documents/utils.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "float | int") [assignment] src/documents/utils.py:0: error: Incompatible types in assignment (expression has type "float | int", variable has type "int | None") [assignment] -src/documents/utils.py:0: error: Missing type parameters for generic type "CompletedProcess" [type-arg] -src/documents/validators.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/utils.py:0: error: Missing type arguments for generic type "CompletedProcess" [type-arg] +src/documents/validators.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "filter_queryset" [attr-defined] src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "get_queryset" [attr-defined] src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "queryset" [attr-defined] @@ -1542,12 +1686,22 @@ src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "request src/documents/views.py:0: error: "get_serializer_context" undefined in superclass [misc] src/documents/views.py:0: error: "object" not callable [operator] src/documents/views.py:0: error: "type[Model]" has no attribute "objects" [attr-defined] +src/documents/views.py:0: error: Argument "filename" to "FileResponse" has incompatible type "str | Any | None"; expected "str" [arg-type] src/documents/views.py:0: error: Argument "path" to "EmailAttachment" has incompatible type "Path | None"; expected "Path" [arg-type] +src/documents/views.py:0: error: Argument "user" to "_has_document_permissions" of "DocumentOperationPermissionMixin" has incompatible type "User | AnonymousUser"; expected "User" [arg-type] +src/documents/views.py:0: error: Argument "user" to "_has_document_permissions" of "DocumentOperationPermissionMixin" has incompatible type "User | AnonymousUser"; expected "User" [arg-type] +src/documents/views.py:0: error: Argument "user" to "_resolve_document_ids" of "DocumentSelectionMixin" has incompatible type "User | AnonymousUser"; expected "User" [arg-type] +src/documents/views.py:0: error: Argument "user" to "_resolve_document_ids" of "DocumentSelectionMixin" has incompatible type "User | AnonymousUser"; expected "User" [arg-type] +src/documents/views.py:0: error: Argument 1 to "get_objects_for_user_owner_aware" has incompatible type "User | AnonymousUser"; expected "User | None" [arg-type] +src/documents/views.py:0: error: Argument 1 to "int" has incompatible type "Any | Collection[str]"; expected "str | Buffer | SupportsInt | SupportsIndex" [arg-type] +src/documents/views.py:0: error: Argument 1 to "int" has incompatible type "Any | Collection[str]"; expected "str | Buffer | SupportsInt | SupportsIndex" [arg-type] +src/documents/views.py:0: error: Argument 1 to "paginate_queryset" of "GenericAPIView" has incompatible type "TantivyRelevanceList"; expected "QuerySet[Any, Any]" [arg-type] src/documents/views.py:0: error: Argument 2 to "match_correspondents" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] src/documents/views.py:0: error: Argument 2 to "match_document_types" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] src/documents/views.py:0: error: Argument 2 to "match_storage_paths" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] src/documents/views.py:0: error: Argument 2 to "match_tags" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] -src/documents/views.py:0: error: Argument 4 to "autocomplete" has incompatible type "User | AnonymousUser | None"; expected "User | None" [arg-type] +src/documents/views.py:0: error: Argument 3 to "autocomplete" of "TantivyBackend" has incompatible type "User | AnonymousUser | None"; expected "AbstractBaseUser | None" [arg-type] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] @@ -1614,10 +1768,19 @@ src/documents/views.py:0: error: Function is missing a type annotation [no-unty src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/views.py:0: error: Incompatible types in assignment (expression has type "Any | None", variable has type "dict[Any, Any]") [assignment] src/documents/views.py:0: error: Incompatible types in assignment (expression has type "QuerySet[Any, Any]", variable has type "list[Any]") [assignment] src/documents/views.py:0: error: Incompatible types in assignment (expression has type "QuerySet[Any, Any]", variable has type "list[Document]") [assignment] @@ -1634,41 +1797,16 @@ src/documents/views.py:0: error: Incompatible types in assignment (expression ha src/documents/views.py:0: error: Incompatible types in assignment (expression has type "str", target has type "dict[str, str]") [assignment] src/documents/views.py:0: error: Incompatible types in assignment (expression has type "tuple[type[IsAuthenticated]]", variable has type "tuple[type[IsAuthenticated], type[PaperlessObjectPermissions]]") [assignment] src/documents/views.py:0: error: Incompatible types in assignment (expression has type "type[ArchiveOnlyStrategy]", variable has type "type[OriginalAndArchiveStrategy]") [assignment] -src/documents/views.py:0: error: Incompatible types in assignment (expression has type "type[DelayedMoreLikeThisQuery]", variable has type "type[DelayedFullTextQuery]") [assignment] src/documents/views.py:0: error: Incompatible types in assignment (expression has type "type[DocumentSerializer]", variable has type "type[TrashSerializer]") [assignment] src/documents/views.py:0: error: Incompatible types in assignment (expression has type "type[OriginalsOnlyStrategy]", variable has type "type[OriginalAndArchiveStrategy]") [assignment] src/documents/views.py:0: error: Item "AnonymousUser" of "User | AnonymousUser" has no attribute "get_full_name" [union-attr] -src/documents/views.py:0: error: Item "BasePagination" of "BasePagination | None" has no attribute "get_page_size" [union-attr] src/documents/views.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/documents/views.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/documents/views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] -src/documents/views.py:0: error: Item "None" of "BasePagination | None" has no attribute "get_page_size" [union-attr] src/documents/views.py:0: error: Item "None" of "dict[str, _PingReply] | None" has no attribute "keys" [union-attr] src/documents/views.py:0: error: Missing positional argument "request" in call to "email_documents" [call-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "GenericViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "ReadOnlyModelViewSet" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] -src/documents/views.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/views.py:0: error: Missing type arguments for generic type "Serializer" [type-arg] +src/documents/views.py:0: error: Missing type arguments for generic type "list" [type-arg] src/documents/views.py:0: error: Need type annotation for "authentication_classes" (hint: "authentication_classes: list[] = ...") [var-annotated] src/documents/views.py:0: error: Need type annotation for "children_map" (hint: "children_map: dict[, ] = ...") [var-annotated] src/documents/views.py:0: error: Need type annotation for "doc" [var-annotated] @@ -1684,19 +1822,19 @@ src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] src/documents/views.py:0: error: Value of type "Iterable[CustomField]" is not indexable [index] src/documents/views.py:0: error: Value of type "Iterable[Group]" is not indexable [index] -src/documents/views.py:0: error: Value of type "Iterable[MailAccount]" is not indexable [index] -src/documents/views.py:0: error: Value of type "Iterable[MailRule]" is not indexable [index] src/documents/views.py:0: error: Value of type "Iterable[User]" is not indexable [index] src/documents/views.py:0: error: Value of type "Iterable[Workflow]" is not indexable [index] src/documents/views.py:0: error: Value of type "dict[str, _PingReply] | None" is not indexable [index] src/documents/workflows/actions.py:0: error: Argument "files" to "delay" of "Task" has incompatible type "dict[str, tuple[str, bytes, str]] | None"; expected "dict[Any, Any]" [arg-type] src/documents/workflows/actions.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/workflows/actions.py:0: error: Function is missing a type annotation [no-untyped-def] -src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/workflows/actions.py:0: error: Incompatible types in assignment (expression has type "Any | None", variable has type "Document") [assignment] src/documents/workflows/actions.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "dict[Any, str]") [assignment] src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "added" [union-attr] @@ -1729,9 +1867,9 @@ src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebho src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "url" [union-attr] src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "url" [union-attr] src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "use_params" [union-attr] -src/documents/workflows/actions.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/workflows/actions.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/workflows/actions.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/workflows/actions.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/workflows/actions.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/workflows/actions.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_change_groups"; maybe "assign_change_groups"? [attr-defined] src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_change_groups"; maybe "assign_change_groups"? [attr-defined] src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_change_users"; maybe "assign_change_users"? [attr-defined] @@ -1759,12 +1897,11 @@ src/documents/workflows/mutations.py:0: error: Function is missing a return type src/documents/workflows/mutations.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/workflows/mutations.py:0: error: Function is missing a return type annotation [no-untyped-def] src/documents/workflows/mutations.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/workflows/mutations.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/workflows/mutations.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/documents/workflows/mutations.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/documents/workflows/mutations.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/documents/workflows/mutations.py:0: error: Need type annotation for "permissions" [var-annotated] src/documents/workflows/utils.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/workflows/webhooks.py:0: error: Argument 1 to "_format_ip_for_url" of "WebhookTransport" has incompatible type "str | int"; expected "str" [arg-type] src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "Cookies | CookieJar | dict[str, str] | list[tuple[str, str]] | None" [arg-type] src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None" [arg-type] src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "Mapping[str, Any] | None" [arg-type] @@ -1774,11 +1911,10 @@ src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" h src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "float | tuple[float | None, float | None, float | None, float | None] | Timeout | None | UseClientDefault" [arg-type] src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "tuple[str | bytes, str | bytes] | Callable[[Request], Request] | Auth | UseClientDefault" [arg-type] src/documents/workflows/webhooks.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/documents/workflows/webhooks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/documents/workflows/webhooks.py:0: error: Incompatible return value type (got "str | int | None", expected "str | None") [return-value] -src/documents/workflows/webhooks.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/workflows/webhooks.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/documents/workflows/webhooks.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/workflows/webhooks.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/documents/workflows/webhooks.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/workflows/webhooks.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/documents/workflows/webhooks.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] @@ -1798,30 +1934,33 @@ src/paperless/admin.py:0: error: "type[ModelForm[Any]]" has no attribute "reques src/paperless/admin.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless/admin.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/admin.py:0: error: Item "None" of "dict[str, Any] | None" has no attribute "get" [union-attr] -src/paperless/admin.py:0: error: Missing type parameters for generic type "ModelForm" [type-arg] -src/paperless/admin.py:0: error: Missing type parameters for generic type "UserAdmin" [type-arg] +src/paperless/admin.py:0: error: Missing type arguments for generic type "ModelForm" [type-arg] +src/paperless/admin.py:0: error: Missing type arguments for generic type "UserAdmin" [type-arg] src/paperless/admin.py:0: error: Signature of "get_form" incompatible with supertype "django.contrib.admin.options.ModelAdmin" [override] src/paperless/apps.py:0: error: Skipping analyzing "allauth.socialaccount.signals": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/asgi.py:0: error: Argument 1 to "URLRouter" has incompatible type "list[URLPattern]"; expected "list[_ExtendedURLPattern | URLRouter]" [arg-type] src/paperless/auth.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/auth.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/auth.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/auth.py:0: error: No return value expected [return-value] src/paperless/auth.py:0: error: No return value expected [return-value] src/paperless/auth.py:0: error: Return type "None" of "__call__" incompatible with return type "HttpResponseBase | Awaitable[HttpResponseBase]" in supertype "django.contrib.auth.middleware.RemoteUserMiddleware" [override] src/paperless/auth.py:0: error: Skipping analyzing "allauth.mfa.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/paperless/checks.py:0: error: Argument 1 to "append" of "list" has incompatible type "Warning"; expected "Error" [arg-type] +src/paperless/celery.py:0: error: Argument 2 to "register" has incompatible type "Callable[[object], bytes]"; expected "Callable[[Any], str] | None" [arg-type] +src/paperless/celery.py:0: error: Argument 3 to "register" has incompatible type "Callable[[bytes], object]"; expected "Callable[[str], Any] | None" [arg-type] +src/paperless/celery.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/checks.py:0: error: Argument 1 to "append" of "list" has incompatible type "Error"; expected "Warning" [arg-type] src/paperless/checks.py:0: error: Argument 2 to "path_check" has incompatible type "Path | None"; expected "Path" [arg-type] src/paperless/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless/checks.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/checks.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/checks.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/checks.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Incompatible return value type (got "list[Warning]", expected "list[Error]") [return-value] +src/paperless/checks.py:0: error: Incompatible return value type (got "list[Warning]", expected "list[Error]") [return-value] +src/paperless/checks.py:0: error: Incompatible return value type (got "list[Warning]", expected "list[Error]") [return-value] +src/paperless/checks.py:0: error: Incompatible return value type (got "list[Warning]", expected "list[Error]") [return-value] +src/paperless/checks.py:0: error: List item 0 has incompatible type "str | None"; expected "str | bytes | PathLike[str] | PathLike[bytes]" [list-item] src/paperless/config.py:0: error: Incompatible return value type (got "ApplicationConfiguration | None", expected "ApplicationConfiguration") [return-value] -src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "Any | None", variable has type "str") [assignment] src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] @@ -1829,119 +1968,320 @@ src/paperless/config.py:0: error: Incompatible types in assignment (expression h src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] -src/paperless/consumers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless/consumers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless/consumers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/consumers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/consumers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/consumers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "groups" [union-attr] -src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "id" [union-attr] -src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "id" [union-attr] -src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "is_authenticated" [union-attr] -src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "is_superuser" [union-attr] -src/paperless/consumers.py:0: error: Item "UserLazyObject" of "UserLazyObject | None" has no attribute "groups" [union-attr] -src/paperless/consumers.py:0: error: Item "UserLazyObject" of "UserLazyObject | None" has no attribute "id" [union-attr] -src/paperless/consumers.py:0: error: Item "UserLazyObject" of "UserLazyObject | None" has no attribute "id" [union-attr] -src/paperless/consumers.py:0: error: Item "UserLazyObject" of "UserLazyObject | None" has no attribute "is_superuser" [union-attr] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ArchiveFileGenerationChoices") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "CleanChoices") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ColorConvertChoices") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "OutputTypeChoices") [assignment] +src/paperless/consumers.py:0: error: Argument 1 to "_can_view" of "StatusConsumer" has incompatible type "DocumentUpdatedData"; expected "PermissionsData" [arg-type] +src/paperless/consumers.py:0: error: Argument 1 to "_can_view" of "StatusConsumer" has incompatible type "ProgressUpdateData"; expected "PermissionsData" [arg-type] +src/paperless/consumers.py:0: error: Item "AbstractBaseUser" of "AbstractBaseUser | AnonymousUser" has no attribute "groups" [union-attr] +src/paperless/consumers.py:0: error: Item "AbstractBaseUser" of "AbstractBaseUser | AnonymousUser" has no attribute "id" [union-attr] +src/paperless/consumers.py:0: error: Item "AbstractBaseUser" of "AbstractBaseUser | AnonymousUser" has no attribute "is_superuser" [union-attr] +src/paperless/consumers.py:0: error: Unsupported operand types for in ("Any | None" and "list[int]") [operator] src/paperless/db_cache.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/db_cache.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/db_cache.py:0: error: Skipping analyzing "cachalot.api": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/db_cache.py:0: error: Skipping analyzing "cachalot.utils": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/middleware.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/middleware.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/middleware.py:0: error: Value of type "Collection[str]" is not indexable [index] src/paperless/migrations/0001_initial.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/migrations/0008_replace_skip_archive_file.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/network.py:0: error: Incompatible return value type (got "list[str | int]", expected "list[str]") [return-value] +src/paperless/parsers/tesseract.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/paperless/parsers/tesseract.py:0: error: Skipping analyzing "img2pdf": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/parsers/utils.py:0: error: No overload variant of "get" of "Object" matches argument types "str", "bool" [call-overload] src/paperless/serialisers.py:0: error: "PasswordValidationMixin" has no attribute "instance" [attr-defined] +src/paperless/serialisers.py:0: error: "UploadedFile" has no attribute "field_name" [attr-defined] src/paperless/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless/serialisers.py:0: error: Item "None" of "str | None" has no attribute "replace" [union-attr] -src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] -src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] src/paperless/serialisers.py:0: error: Need type annotation for "auth_token" [var-annotated] src/paperless/serialisers.py:0: error: Signature of "run_validation" incompatible with supertype "rest_framework.fields.Field" [override] src/paperless/serialisers.py:0: error: Skipping analyzing "allauth.mfa.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/serialisers.py:0: error: Skipping analyzing "allauth.mfa.models": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/serialisers.py:0: error: Skipping analyzing "allauth.mfa.totp.internal.auth": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/serialisers.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/paperless/settings.py:0: error: "Sequence[str]" has no attribute "append" [attr-defined] -src/paperless/settings.py:0: error: "Sequence[str]" has no attribute "insert" [attr-defined] -src/paperless/settings.py:0: error: "object" has no attribute "update" [attr-defined] -src/paperless/settings.py:0: error: "object" has no attribute "update" [attr-defined] -src/paperless/settings.py:0: error: "object" has no attribute "update" [attr-defined] -src/paperless/settings.py:0: error: "object" has no attribute "update" [attr-defined] -src/paperless/settings.py:0: error: Argument 1 to "_parse_ignore_dates" has incompatible type "str | None"; expected "str" [arg-type] -src/paperless/settings.py:0: error: Argument 1 to "append" of "list" has incompatible type "str | None"; expected "str" [arg-type] -src/paperless/settings.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] -src/paperless/settings.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] -src/paperless/settings.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] -src/paperless/settings.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] -src/paperless/settings.py:0: error: Argument 2 to "__get_path" has incompatible type "str | None"; expected "PathLike[Any] | str" [arg-type] -src/paperless/settings.py:0: error: Argument 2 to "getenv" has incompatible type "None"; expected "Collection[str]" [arg-type] -src/paperless/settings.py:0: error: Argument 2 to "getenv" has incompatible type "None"; expected "Collection[str]" [arg-type] -src/paperless/settings.py:0: error: Argument 2 to "getenv" has incompatible type "None"; expected "Collection[str]" [arg-type] -src/paperless/settings.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless/settings.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless/settings.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless/settings.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless/settings.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/settings.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/settings.py:0: error: Incompatible return value type (got "set[date]", expected "set[datetime]") [return-value] -src/paperless/settings.py:0: error: Incompatible return value type (got "tuple[str | None, str, str, str, str]", expected "tuple[str, str, str, str, str]") [return-value] -src/paperless/settings.py:0: error: Incompatible types in assignment (expression has type "bool", variable has type "str") [assignment] -src/paperless/settings.py:0: error: Incompatible types in assignment (expression has type "set[datetime]", variable has type "set[date]") [assignment] -src/paperless/settings.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] -src/paperless/settings.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/paperless/settings.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/paperless/settings.py:0: error: No overload variant of "getenv" matches argument types "Collection[str]", "Collection[str]" [call-overload] -src/paperless/settings.py:0: error: Skipping analyzing "compression_middleware.middleware": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/settings/__init__.py:0: error: "Collection[str]" has no attribute "append" [attr-defined] +src/paperless/settings/__init__.py:0: error: "Collection[str]" has no attribute "insert" [attr-defined] +src/paperless/settings/__init__.py:0: error: Argument 1 to "append" of "list" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/settings/__init__.py:0: error: Argument 1 to "parse_ignore_dates" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/settings/__init__.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/settings/__init__.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/settings/__init__.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/settings/__init__.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/settings/__init__.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/settings/__init__.py:0: error: Incompatible types in assignment (expression has type "bool", variable has type "str") [assignment] +src/paperless/settings/__init__.py:0: error: Incompatible types in assignment (expression has type "dict[str, object]", target has type "str") [assignment] +src/paperless/settings/__init__.py:0: error: Skipping analyzing "compression_middleware.middleware": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/settings/custom.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/paperless/settings/custom.py:0: error: No overload variant of "getenv" matches argument types "Collection[str]", "Collection[str]" [call-overload] +src/paperless/settings/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "bool") [assignment] +src/paperless/settings/parsers.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/paperless/settings/parsers.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/paperless/settings/parsers.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/paperless/signals.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/parsers/conftest.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/parsers/conftest.py:0: error: Incompatible return value type (got "def _make_parser(**django_settings_overrides: Any) -> _GeneratorContextManager[Any, None, None]", expected "Callable[..., Generator[RasterisedDocumentParser, None, None]]") [return-value] +src/paperless/tests/parsers/test_convert_image_to_pdfa.py:0: error: Skipping analyzing "img2pdf": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/tests/parsers/test_mail_parser.py:0: error: Argument 1 to "extract_metadata" of "MailDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_mail_parser.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/parsers/test_mail_parser.py:0: error: Item "None" of "Request | None" has no attribute "url" [union-attr] +src/paperless/tests/parsers/test_mail_parser.py:0: error: Item "None" of "Request | None" has no attribute "url" [union-attr] +src/paperless/tests/parsers/test_mail_parser_live.py:0: error: Argument 1 to "extract_text" has incompatible type "Path | None"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_mail_parser_live.py:0: error: List item 0 has incompatible type "str | None"; expected "str | bytes | PathLike[str] | PathLike[bytes]" [list-item] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_parse_modes.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_remote_parser.py:0: error: Too few arguments [call-arg] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Argument "input_file" to "construct_ocrmypdf_parameters" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Argument "input_file" to "construct_ocrmypdf_parameters" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Argument "output_file" to "construct_ocrmypdf_parameters" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Argument "output_file" to "construct_ocrmypdf_parameters" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Argument "sidecar_file" to "construct_ocrmypdf_parameters" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Argument "sidecar_file" to "construct_ocrmypdf_parameters" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "color_conversion_strategy" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "deskew" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "language" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "max_image_pixels" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "mode" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "mode" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "output_type" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "pages" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "unpaper_clean" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "unpaper_clean" [union-attr] +src/paperless/tests/parsers/test_tesseract_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "user_args" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__enter__"; maybe "__iter__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__enter__"; maybe "__iter__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__enter__"; maybe "__iter__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__enter__"; maybe "__iter__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__enter__"; maybe "__iter__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__enter__"; maybe "__iter__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__enter__"; maybe "__iter__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__exit__"; maybe "__next__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__exit__"; maybe "__next__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__exit__"; maybe "__next__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__exit__"; maybe "__next__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__exit__"; maybe "__next__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__exit__"; maybe "__next__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: "Generator[RasterisedDocumentParser, None, None]" has no attribute "__exit__"; maybe "__next__"? [attr-defined] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "assert_ordered_substrings" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "assert_ordered_substrings" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "assert_ordered_substrings" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "assert_ordered_substrings" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "assert_ordered_substrings" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "assert_ordered_substrings" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "assert_ordered_substrings" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "calculate_a4_dpi" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 1 to "get_dpi" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Argument 2 to "normalize" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "ModeChoices") [assignment] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tesseract_parser.py:0: error: Item "None" of "str | None" has no attribute "lower" [union-attr] +src/paperless/tests/parsers/test_tika_parser.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/paperless/tests/settings/test_custom_parsers.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/paperless/tests/settings/test_db_cache.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/settings/test_db_cache.py:0: error: Skipping analyzing "cachalot.settings": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/settings/test_environment_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/tests/test_adapter.py:0: error: Cannot assign to a method [method-assign] src/paperless/tests/test_adapter.py:0: error: Cannot assign to a method [method-assign] src/paperless/tests/test_adapter.py:0: error: Cannot assign to a method [method-assign] -src/paperless/tests/test_adapter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] src/paperless/tests/test_adapter.py:0: error: Skipping analyzing "allauth.account.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/tests/test_adapter.py:0: error: Skipping analyzing "allauth.core": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/tests/test_adapter.py:0: error: Skipping analyzing "allauth.socialaccount.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/paperless/tests/test_db_cache.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/tests/test_db_cache.py:0: error: Skipping analyzing "cachalot.settings": module is installed, but missing library stubs or py.typed marker [import-untyped] -src/paperless/tests/test_settings.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/tests/test_settings.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_celery.py:0: error: Value of type "object" is not indexable [index] +src/paperless/tests/test_celery.py:0: error: Value of type "object" is not indexable [index] +src/paperless/tests/test_checks.py:0: error: Generator has incompatible item type "str | None"; expected "str" [misc] +src/paperless/tests/test_checks.py:0: error: Unsupported right operand type for in ("str | None") [operator] +src/paperless/tests/test_checks.py:0: error: Unsupported right operand type for in ("str | None") [operator] +src/paperless/tests/test_checks.py:0: error: Unsupported right operand type for in ("str | None") [operator] +src/paperless/tests/test_checks.py:0: error: Unsupported right operand type for in ("str | None") [operator] +src/paperless/tests/test_checks.py:0: error: Unsupported right operand type for in ("str | None") [operator] +src/paperless/tests/test_checks.py:0: error: Unsupported right operand type for in ("str | None") [operator] +src/paperless/tests/test_logging.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_logging.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Cannot determine type of "apps" [has-type] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/paperless/tests/test_migration_replace_skip_archive_file.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/paperless/tests/test_ocr_config.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_ocr_config.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_ocr_config.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/test_ocr_config.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/test_ocr_config.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/test_ocr_config.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/test_ocr_config.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: "type" has no attribute "name" [attr-defined] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "append" of "list" has incompatible type "type[AlwaysDeclines]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "append" of "list" has incompatible type "type[DecliningExternal]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "append" of "list" has incompatible type "type[ExtParser]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "append" of "list" has incompatible type "type[ExternalParser]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "register_builtin" of "ParserRegistry" has incompatible type "type[AcceptingBuiltin]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "register_builtin" of "ParserRegistry" has incompatible type "type[AlwaysDeclines]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "register_builtin" of "ParserRegistry" has incompatible type "type[BuiltinParser]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "register_builtin" of "ParserRegistry" has incompatible type "type[DecliningParser]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "register_builtin" of "ParserRegistry" has incompatible type "type[HighScoreParser]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Argument 1 to "register_builtin" of "ParserRegistry" has incompatible type "type[LowScoreParser]"; expected "type[ParserProtocol]" [arg-type] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless/tests/test_registry.py:0: error: Missing type arguments for generic type "list" [type-arg] src/paperless/tests/test_signals.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/paperless/tests/test_signals.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] src/paperless/tests/test_utils.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/tests/test_utils.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/tests/test_utils.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/tests/test_views.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/tests/test_views.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] -src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] -src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] -src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] -src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] -src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] -src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] -src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] -src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-item] -src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-item] -src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-item] -src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-item] -src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-unknown-key] +src/paperless/tests/test_views.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "streaming_content" [attr-defined] src/paperless/urls.py:0: error: Argument 2 to "path" has incompatible type "_ASGIApplicationProtocol"; expected "Callable[..., HttpResponseBase]" [arg-type] src/paperless/urls.py:0: error: Skipping analyzing "allauth.account": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/urls.py:0: error: Skipping analyzing "allauth.mfa.base": module is installed, but missing library stubs or py.typed marker [import-untyped] @@ -1949,6 +2289,8 @@ src/paperless/urls.py:0: error: Skipping analyzing "allauth.socialaccount": modu src/paperless/urls.py:0: error: Skipping analyzing "allauth.urls": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/validators.py:0: error: Argument 1 to "join" of "str" has incompatible type "Iterator[str | bytes] | Any"; expected "Iterable[str]" [arg-type] src/paperless/validators.py:0: error: Incompatible types in assignment (expression has type "str | bytes", variable has type "str") [assignment] +src/paperless/views.py:0: error: Argument 1 to "int" has incompatible type "Any | Collection[str]"; expected "str | Buffer | SupportsInt | SupportsIndex" [arg-type] +src/paperless/views.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless/views.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] @@ -1966,10 +2308,10 @@ src/paperless/views.py:0: error: Function is missing a type annotation [no-unty src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless/views.py:0: error: Incompatible type for "user" of "Token" (got "User | AnonymousUser", expected "User | Combinable") [misc] src/paperless/views.py:0: error: Incompatible type for lookup 'user': (got "User | AnonymousUser", expected "User | int | None") [misc] src/paperless/views.py:0: error: Item "AnonymousUser" of "User | AnonymousUser" has no attribute "socialaccount_set" [union-attr] -src/paperless/views.py:0: error: Item "None" of "Any | None" has no attribute "results" [union-attr] src/paperless/views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "ai_enabled" [union-attr] src/paperless/views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "llm_embedding_backend" [union-attr] src/paperless/views.py:0: error: Item "None" of "Page[Any] | None" has no attribute "paginator" [union-attr] @@ -1980,14 +2322,6 @@ src/paperless/views.py:0: error: Item "None" of "User | AnonymousUser | None" ha src/paperless/views.py:0: error: Item "None" of "User | AnonymousUser | None" has no attribute "set_password" [union-attr] src/paperless/views.py:0: error: Item "User" of "User | AnonymousUser" has no attribute "socialaccount_set" [union-attr] src/paperless/views.py:0: error: Item "_SupportsPagination[Any]" of "_SupportsPagination[Any] | Any" has no attribute "values_list" [union-attr] -src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/paperless/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/paperless/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/paperless/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa.base.internal.flows": module is installed, but missing library stubs or py.typed marker [import-untyped] @@ -1997,12 +2331,13 @@ src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa.totp.internal": src/paperless/views.py:0: error: Skipping analyzing "allauth.socialaccount.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless/views.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless_ai/ai_classifier.py:0: error: Argument 1 to "parse_ai_response" has incompatible type "str"; expected "dict[Any, Any]" [arg-type] -src/paperless_ai/ai_classifier.py:0: error: Missing type parameters for generic type "dict" [type-arg] -src/paperless_ai/ai_classifier.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/paperless_ai/ai_classifier.py:0: error: Missing type arguments for generic type "dict" [type-arg] +src/paperless_ai/ai_classifier.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/paperless_ai/chat.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/chat.py:0: error: Item "AsyncGenerator[str, None]" of "Any | Generator[str, None, None] | AsyncGenerator[str, None]" has no attribute "__iter__" (not iterable) [union-attr] src/paperless_ai/chat.py:0: error: Item "Response" of "Response | StreamingResponse | AsyncStreamingResponse | PydanticResponse" has no attribute "response_gen" [union-attr] src/paperless_ai/client.py:0: error: Incompatible return value type (got "dict[str, Any]", expected "str") [return-value] +src/paperless_ai/client.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] src/paperless_ai/indexing.py:0: error: Argument "persist_dir" to "from_defaults" of "StorageContext" has incompatible type "Path"; expected "str | None" [arg-type] src/paperless_ai/indexing.py:0: error: Argument 1 to "from_persist_dir" of "FaissVectorStore" has incompatible type "Path"; expected "str" [arg-type] src/paperless_ai/indexing.py:0: error: Argument 1 to "from_persist_dir" of "SimpleDocumentStore" has incompatible type "Path"; expected "str" [arg-type] @@ -2013,12 +2348,13 @@ src/paperless_ai/indexing.py:0: error: Function is missing a return type annotat src/paperless_ai/indexing.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/indexing.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_ai/indexing.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_ai/indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless_ai/indexing.py:0: error: Skipping analyzing "faiss": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless_ai/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_ai/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/matching.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/paperless_ai/matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/matching.py:0: error: Missing type arguments for generic type "list" [type-arg] +src/paperless_ai/tests/conftest.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] @@ -2030,26 +2366,25 @@ src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a typ src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless_ai/tests/test_ai_indexing.py:0: error: Return type "list[float]" of "_aget_query_embedding" incompatible with return type "Coroutine[Any, Any, list[float]]" in supertype "llama_index.core.base.embeddings.base.BaseEmbedding" [override] src/paperless_ai/tests/test_chat.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_chat.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_chat.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_ai/tests/test_chat.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_chat.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_chat.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_chat.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless_ai/tests/test_client.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_client.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_client.py:0: error: Function is missing a return type annotation [no-untyped-def] @@ -2058,7 +2393,8 @@ src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annot src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_ai/tests/test_client.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None]" [index] src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] @@ -2077,14 +2413,14 @@ src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_tags src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_tags_by_name" has incompatible type "None"; expected "User" [arg-type] src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_tags_by_name" has incompatible type "None"; expected "User" [arg-type] src/paperless_ai/tests/test_matching.py:0: error: Argument 1 to "match_tags_by_name" has incompatible type "list[str | None]"; expected "list[str]" [arg-type] -src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/admin.py:0: error: Missing type parameters for generic type "ModelAdmin" [type-arg] -src/paperless_mail/admin.py:0: error: Missing type parameters for generic type "ModelForm" [type-arg] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/admin.py:0: error: Missing type arguments for generic type "ModelAdmin" [type-arg] +src/paperless_mail/admin.py:0: error: Missing type arguments for generic type "ModelForm" [type-arg] src/paperless_mail/mail.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] src/paperless_mail/mail.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] src/paperless_mail/mail.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] @@ -2114,13 +2450,13 @@ src/paperless_mail/mail.py:0: error: Function is missing a return type annotatio src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless_mail/mail.py:0: error: Incompatible return value type (got "MailBoxUnencrypted", expected "MailBox") [return-value] src/paperless_mail/mail.py:0: error: Incompatible type for "uid" of "ProcessedMail" (got "str | None", expected "str | int | Combinable") [misc] src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "MailBox", variable has type "MailBoxUnencrypted") [assignment] @@ -2130,7 +2466,7 @@ src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expressio src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "str", target has type "date") [assignment] src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "str", target has type "date") [assignment] src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "str", target has type "date") [assignment] -src/paperless_mail/mail.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/paperless_mail/mail.py:0: error: Missing type arguments for generic type "dict" [type-arg] src/paperless_mail/management/commands/mail_fetcher.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/models.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/models.py:0: error: Function is missing a type annotation [no-untyped-def] @@ -2144,24 +2480,6 @@ src/paperless_mail/oauth.py:0: error: Incompatible return value type (got "None" src/paperless_mail/oauth.py:0: error: Incompatible return value type (got "None", expected "MicrosoftGraphOAuth2") [return-value] src/paperless_mail/oauth.py:0: error: Incompatible types in assignment (expression has type "GoogleOAuth2", variable has type "None") [assignment] src/paperless_mail/oauth.py:0: error: Incompatible types in assignment (expression has type "MicrosoftGraphOAuth2", variable has type "None") [assignment] -src/paperless_mail/parsers.py:0: error: "tuple[str, ...]" has no attribute "encode" [attr-defined] -src/paperless_mail/parsers.py:0: error: Argument 1 to "make_thumbnail_from_pdf" has incompatible type "None"; expected "Path" [arg-type] -src/paperless_mail/parsers.py:0: error: Argument 2 to "generate_pdf" of "MailDocumentParser" has incompatible type "int"; expected "PdfLayout | None" [arg-type] -src/paperless_mail/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_mail/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_mail/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_mail/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_mail/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] -src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] -src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] -src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "int", variable has type "PdfLayout | None") [assignment] -src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] -src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "tuple[str, ...]") [assignment] -src/paperless_mail/parsers.py:0: error: Item "None" of "EmailAddress | None" has no attribute "full" [union-attr] -src/paperless_mail/parsers.py:0: error: Item "None" of "EmailAddress | None" has no attribute "full" [union-attr] -src/paperless_mail/parsers.py:0: error: Need type annotation for "result" (hint: "result: list[] = ...") [var-annotated] src/paperless_mail/preprocessor.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/preprocessor.py:0: error: Skipping analyzing "gnupg": module is installed, but missing library stubs or py.typed marker [import-untyped] src/paperless_mail/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] @@ -2171,10 +2489,8 @@ src/paperless_mail/serialisers.py:0: error: Function is missing a type annotatio src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] -src/paperless_mail/signals.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_mail/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless_mail/tests/test_mail.py:0: error: "BogusFolderManager" has no attribute "list" [attr-defined] src/paperless_mail/tests/test_mail.py:0: error: "BogusFolderManager" has no attribute "list" [attr-defined] src/paperless_mail/tests/test_mail.py:0: error: "BogusFolderManager" has no attribute "list" [attr-defined] @@ -2183,34 +2499,34 @@ src/paperless_mail/tests/test_mail.py:0: error: "MailMessage" has no attribute " src/paperless_mail/tests/test_mail.py:0: error: "MailMessage" has no attribute "flagged" [attr-defined] src/paperless_mail/tests/test_mail.py:0: error: "MailMessage" has no attribute "seen" [attr-defined] src/paperless_mail/tests/test_mail.py:0: error: "MailMessage" has no attribute "seen" [attr-defined] -src/paperless_mail/tests/test_mail.py:0: error: "type[att@481]" has no attribute "filename" [attr-defined] -src/paperless_mail/tests/test_mail.py:0: error: "type[message2@427]" has no attribute "from_" [attr-defined] -src/paperless_mail/tests/test_mail.py:0: error: "type[message2@427]" has no attribute "from_" [attr-defined] -src/paperless_mail/tests/test_mail.py:0: error: "type[message2@427]" has no attribute "from_values" [attr-defined] -src/paperless_mail/tests/test_mail.py:0: error: "type[message@420]" has no attribute "from_" [attr-defined] -src/paperless_mail/tests/test_mail.py:0: error: "type[message@420]" has no attribute "from_values" [attr-defined] -src/paperless_mail/tests/test_mail.py:0: error: "type[message@479]" has no attribute "subject" [attr-defined] -src/paperless_mail/tests/test_mail.py:0: error: "type[message@532]" has no attribute "attachments" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[att@482]" has no attribute "filename" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message2@428]" has no attribute "from_" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message2@428]" has no attribute "from_" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message2@428]" has no attribute "from_values" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message@421]" has no attribute "from_" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message@421]" has no attribute "from_values" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message@480]" has no attribute "subject" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message@533]" has no attribute "attachments" [attr-defined] src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxFolderSelectError" has incompatible type "None"; expected "tuple[Any, ...]" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxFolderSelectError" has incompatible type "None"; expected "tuple[Any, ...]" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxLoginError" has incompatible type "str"; expected "tuple[Any, ...]" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxLoginError" has incompatible type "str"; expected "tuple[Any, ...]" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxLoginError" has incompatible type "str"; expected "tuple[Any, ...]" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxLoginError" has incompatible type "str"; expected "tuple[Any, ...]" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message2@427]"; expected "MailMessage" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message2@427]"; expected "MailMessage" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@420]"; expected "MailMessage" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@420]"; expected "MailMessage" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@420]"; expected "MailMessage" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@420]"; expected "MailMessage" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@479]"; expected "MailMessage" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@479]"; expected "MailMessage" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@479]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message2@428]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message2@428]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@421]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@421]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@421]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@421]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@480]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@480]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@480]"; expected "MailMessage" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "filter" has incompatible type "Callable[[Any], bool]"; expected "Callable[[MailMessage], TypeGuard[Never]]" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "filter" has incompatible type "Callable[[Any], bool]"; expected "Callable[[MailMessage], TypeGuard[Never]]" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@481]"; expected "MailAttachment" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@481]"; expected "MailAttachment" [arg-type] -src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@481]"; expected "MailAttachment" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@482]"; expected "MailAttachment" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@482]"; expected "MailAttachment" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@482]"; expected "MailAttachment" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "assertIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] src/paperless_mail/tests/test_mail.py:0: error: Dict entry 0 has incompatible type "str": "None"; expected "str": "str" [dict-item] src/paperless_mail/tests/test_mail.py:0: error: Dict entry 0 has incompatible type "str": "int"; expected "str": "str" [dict-item] @@ -2227,25 +2543,26 @@ src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annot src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] @@ -2262,7 +2579,7 @@ src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "name" [union-attr] src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "name" [union-attr] src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "MailRule | None" has no attribute "name" [union-attr] -src/paperless_mail/tests/test_mail.py:0: error: Missing type parameters for generic type "AbstractContextManager" [type-arg] +src/paperless_mail/tests/test_mail.py:0: error: Missing type arguments for generic type "AbstractContextManager" [type-arg] src/paperless_mail/tests/test_mail.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "datetime" [attr-defined] src/paperless_mail/tests/test_mail_oauth.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "url" [attr-defined] src/paperless_mail/tests/test_mail_oauth.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "url" [attr-defined] @@ -2271,12 +2588,7 @@ src/paperless_mail/tests/test_mail_oauth.py:0: error: "_MonkeyPatchedWSGIRespons src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_mail/tests/test_parsers.py:0: error: Argument 1 to "extract_metadata" of "MailDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_mail/tests/test_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_mail/tests/test_parsers.py:0: error: Item "None" of "Request | None" has no attribute "url" [union-attr] -src/paperless_mail/tests/test_parsers.py:0: error: Item "None" of "Request | None" has no attribute "url" [union-attr] -src/paperless_mail/tests/test_parsers_live.py:0: error: List item 0 has incompatible type "str | None"; expected "str | bytes | PathLike[str] | PathLike[bytes]" [list-item] +src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation for one or more parameters [no-untyped-def] src/paperless_mail/tests/test_preprocessor.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] src/paperless_mail/tests/test_preprocessor.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] src/paperless_mail/tests/test_preprocessor.py:0: error: "TestMailMessageGpgDecryptor" has no attribute "messageEncryptor" [attr-defined] @@ -2295,145 +2607,3 @@ src/paperless_mail/views.py:0: error: Function is missing a type annotation [no src/paperless_mail/views.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/views.py:0: error: Function is missing a type annotation [no-untyped-def] src/paperless_mail/views.py:0: error: Incompatible types in assignment (expression has type "tuple[type[IsAuthenticated]]", variable has type "tuple[type[IsAuthenticated], type[PaperlessObjectPermissions]]") [assignment] -src/paperless_mail/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] -src/paperless_mail/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/paperless_mail/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] -src/paperless_mail/views.py:0: error: Missing type parameters for generic type "ReadOnlyModelViewSet" [type-arg] -src/paperless_remote/checks.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_remote/parsers.py:0: error: "None" has no attribute "open" [attr-defined] -src/paperless_remote/parsers.py:0: error: Argument "engine" to "RemoteEngineConfig" has incompatible type "str | None"; expected "str" [arg-type] -src/paperless_remote/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_remote/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_remote/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_remote/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_remote/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] -src/paperless_remote/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] -src/paperless_remote/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] -src/paperless_remote/parsers.py:0: error: Return type "RemoteEngineConfig" of "get_settings" incompatible with return type "OcrConfig" in supertype "paperless_tesseract.parsers.RasterisedDocumentParser" [override] -src/paperless_remote/signals.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_remote/signals.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_remote/signals.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_remote/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_remote/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_remote/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/checks.py:0: error: Argument 1 to "append" of "list" has incompatible type "Error"; expected "Warning" [arg-type] -src/paperless_tesseract/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_tesseract/checks.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_tesseract/checks.py:0: error: List item 0 has incompatible type "str | None"; expected "str | bytes | PathLike[str] | PathLike[bytes]" [list-item] -src/paperless_tesseract/parsers.py:0: error: Argument "logger" to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] -src/paperless_tesseract/parsers.py:0: error: Argument "logger" to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "str") [assignment] -src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] -src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] -src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] -src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] -src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] -src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] -src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] -src/paperless_tesseract/parsers.py:0: error: List item 4 has incompatible type "Path"; expected "str" [list-item] -src/paperless_tesseract/parsers.py:0: error: List item 5 has incompatible type "Path"; expected "str" [list-item] -src/paperless_tesseract/signals.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_tesseract/signals.py:0: error: Function is missing a type annotation [no-untyped-def] -src/paperless_tesseract/tests/test_checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/tests/test_checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/tests/test_checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] -src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] -src/paperless_tesseract/tests/test_parser.py:0: error: Item "None" of "str | None" has no attribute "strip" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Function is missing a return type annotation [no-untyped-def] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "color_conversion_strategy" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "deskew" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "language" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "max_image_pixels" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "mode" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "output_type" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "pages" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "unpaper_clean" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "unpaper_clean" [union-attr] -src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "user_args" [union-attr] diff --git a/.pyrefly-baseline.json b/.pyrefly-baseline.json index da084db22..d3d005516 100644 --- a/.pyrefly-baseline.json +++ b/.pyrefly-baseline.json @@ -13,9 +13,9 @@ "severity": "error" }, { - "line": 245, + "line": 244, "column": 27, - "stop_line": 245, + "stop_line": 244, "stop_column": 35, "path": "src/documents/admin.py", "code": -2, @@ -25,33 +25,21 @@ "severity": "error" }, { - "line": 246, - "column": 25, - "stop_line": 246, - "stop_column": 33, - "path": "src/documents/admin.py", - "code": -2, - "name": "unbound-name", - "description": "`LogEntry` may be uninitialized", - "concise_description": "`LogEntry` may be uninitialized", - "severity": "error" - }, - { - "line": 239, + "line": 254, "column": 16, - "stop_line": 239, + "stop_line": 254, "stop_column": 24, "path": "src/documents/barcodes.py", "code": -2, "name": "missing-import", - "description": "Cannot find module `zxingcpp`\n Looked in these locations (from config in `/home/trenton/projects/paperless-ngx/pyproject.toml`):\n Search path (from config file): [\"/home/trenton/projects/paperless-ngx/src\"]\n Import root (inferred from project layout): \"/home/trenton/projects/paperless-ngx/src\"\n Site package path queried from interpreter: [\"/home/trenton/.local/share/uv/python/cpython-3.13.4-linux-x86_64-gnu/lib/python3.13\", \"/home/trenton/.local/share/uv/python/cpython-3.13.4-linux-x86_64-gnu/lib/python3.13/lib-dynload\", \"/home/trenton/projects/paperless-ngx/.venv/lib/python3.13/site-packages\"]", + "description": "Cannot find module `zxingcpp`\n Looked in these locations (from config in `/tank/users/trenton/projects/paperless/paperless-ngx/pyproject.toml`):\n Search path (from config file): [\"/tank/users/trenton/projects/paperless/paperless-ngx/src\"]\n Import root (inferred from project layout): \"/tank/users/trenton/projects/paperless/paperless-ngx/src\"\n Site package path queried from interpreter: [\"/tank/users/trenton/projects/paperless/paperless-ngx/.venv/lib/python3.14/site-packages\"]", "concise_description": "Cannot find module `zxingcpp`", "severity": "error" }, { - "line": 323, + "line": 310, "column": 38, - "stop_line": 323, + "stop_line": 310, "stop_column": 51, "path": "src/documents/barcodes.py", "code": -2, @@ -61,45 +49,9 @@ "severity": "error" }, { - "line": 77, - "column": 9, - "stop_line": 77, - "stop_column": 21, - "path": "src/documents/bulk_download.py", - "code": -2, - "name": "bad-override", - "description": "Class member `OriginalsOnlyStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner\n `OriginalsOnlyStrategy.add_document` has type `BoundMethod[OriginalsOnlyStrategy, (self: OriginalsOnlyStrategy, doc: Document) -> None]`, which is not assignable to `BoundMethod[OriginalsOnlyStrategy, (self: OriginalsOnlyStrategy, doc: Document) -> NoReturn]`, the type of `BulkArchiveStrategy.add_document`", - "concise_description": "Class member `OriginalsOnlyStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner", - "severity": "error" - }, - { - "line": 82, - "column": 9, - "stop_line": 82, - "stop_column": 21, - "path": "src/documents/bulk_download.py", - "code": -2, - "name": "bad-override", - "description": "Class member `ArchiveOnlyStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner\n `ArchiveOnlyStrategy.add_document` has type `BoundMethod[ArchiveOnlyStrategy, (self: ArchiveOnlyStrategy, doc: Document) -> None]`, which is not assignable to `BoundMethod[ArchiveOnlyStrategy, (self: ArchiveOnlyStrategy, doc: Document) -> NoReturn]`, the type of `BulkArchiveStrategy.add_document`", - "concise_description": "Class member `ArchiveOnlyStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner", - "severity": "error" - }, - { - "line": 95, - "column": 9, - "stop_line": 95, - "stop_column": 21, - "path": "src/documents/bulk_download.py", - "code": -2, - "name": "bad-override", - "description": "Class member `OriginalAndArchiveStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner\n `OriginalAndArchiveStrategy.add_document` has type `BoundMethod[OriginalAndArchiveStrategy, (self: OriginalAndArchiveStrategy, doc: Document) -> None]`, which is not assignable to `BoundMethod[OriginalAndArchiveStrategy, (self: OriginalAndArchiveStrategy, doc: Document) -> NoReturn]`, the type of `BulkArchiveStrategy.add_document`", - "concise_description": "Class member `OriginalAndArchiveStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner", - "severity": "error" - }, - { - "line": 200, + "line": 260, "column": 16, - "stop_line": 200, + "stop_line": 260, "stop_column": 23, "path": "src/documents/bulk_edit.py", "code": -2, @@ -109,9 +61,9 @@ "severity": "error" }, { - "line": 214, + "line": 274, "column": 9, - "stop_line": 216, + "stop_line": 276, "stop_column": 60, "path": "src/documents/bulk_edit.py", "code": -2, @@ -121,9 +73,9 @@ "severity": "error" }, { - "line": 220, + "line": 280, "column": 32, - "stop_line": 220, + "stop_line": 280, "stop_column": 40, "path": "src/documents/bulk_edit.py", "code": -2, @@ -133,9 +85,9 @@ "severity": "error" }, { - "line": 222, + "line": 282, "column": 9, - "stop_line": 222, + "stop_line": 282, "stop_column": 24, "path": "src/documents/bulk_edit.py", "code": -2, @@ -145,9 +97,9 @@ "severity": "error" }, { - "line": 228, + "line": 288, "column": 21, - "stop_line": 228, + "stop_line": 288, "stop_column": 43, "path": "src/documents/bulk_edit.py", "code": -2, @@ -157,9 +109,9 @@ "severity": "error" }, { - "line": 264, + "line": 324, "column": 5, - "stop_line": 267, + "stop_line": 327, "stop_column": 18, "path": "src/documents/bulk_edit.py", "code": -2, @@ -169,9 +121,9 @@ "severity": "error" }, { - "line": 536, + "line": 693, "column": 33, - "stop_line": 536, + "stop_line": 693, "stop_column": 63, "path": "src/documents/bulk_edit.py", "code": -2, @@ -181,9 +133,9 @@ "severity": "error" }, { - "line": 772, + "line": 990, "column": 13, - "stop_line": 772, + "stop_line": 990, "stop_column": 64, "path": "src/documents/bulk_edit.py", "code": -2, @@ -205,33 +157,9 @@ "severity": "error" }, { - "line": 27, - "column": 1, - "stop_line": 27, - "stop_column": 12, - "path": "src/documents/checks.py", - "code": -2, - "name": "bad-specialization", - "description": "`(app_configs: Unknown, **kwargs: Unknown) -> list[django.core.checks.messages.Warning | builtins.Warning] | list[Unknown]` is not assignable to upper bound `_CheckCallable` of type variable `_C`", - "concise_description": "`(app_configs: Unknown, **kwargs: Unknown) -> list[django.core.checks.messages.Warning | builtins.Warning] | list[Unknown]` is not assignable to upper bound `_CheckCallable` of type variable `_C`", - "severity": "error" - }, - { - "line": 37, - "column": 21, - "stop_line": 37, - "stop_column": 25, - "path": "src/documents/checks.py", - "code": -2, - "name": "unexpected-keyword", - "description": "Unexpected keyword argument `hint` in function `BaseException.__init__`", - "concise_description": "Unexpected keyword argument `hint` in function `BaseException.__init__`", - "severity": "error" - }, - { - "line": 131, + "line": 144, "column": 40, - "stop_line": 131, + "stop_line": 144, "stop_column": 66, "path": "src/documents/classifier.py", "code": -2, @@ -241,21 +169,21 @@ "severity": "error" }, { - "line": 307, + "line": 341, "column": 36, - "stop_line": 309, + "stop_line": 343, "stop_column": 10, "path": "src/documents/classifier.py", "code": -2, "name": "bad-assignment", - "description": "`ndarray[tuple[Any, ...], dtype[Any]] | spmatrix` is not assignable to `ndarray[tuple[Any, ...], dtype[Any]]`", - "concise_description": "`ndarray[tuple[Any, ...], dtype[Any]] | spmatrix` is not assignable to `ndarray[tuple[Any, ...], dtype[Any]]`", + "description": "`ndarray | spmatrix` is not assignable to `ndarray`", + "concise_description": "`ndarray | spmatrix` is not assignable to `ndarray`", "severity": "error" }, { - "line": 314, + "line": 348, "column": 44, - "stop_line": 314, + "stop_line": 348, "stop_column": 48, "path": "src/documents/classifier.py", "code": -2, @@ -265,9 +193,9 @@ "severity": "error" }, { - "line": 327, + "line": 362, "column": 51, - "stop_line": 329, + "stop_line": 364, "stop_column": 24, "path": "src/documents/classifier.py", "code": -2, @@ -277,21 +205,21 @@ "severity": "error" }, { - "line": 332, + "line": 367, "column": 42, - "stop_line": 332, + "stop_line": 367, "stop_column": 88, "path": "src/documents/classifier.py", "code": -2, "name": "bad-assignment", - "description": "`ndarray[tuple[Any, ...], dtype[Any]] | spmatrix` is not assignable to variable `labels_tags_vectorized` with type `ndarray[tuple[Any, ...], dtype[Any]]`", - "concise_description": "`ndarray[tuple[Any, ...], dtype[Any]] | spmatrix` is not assignable to variable `labels_tags_vectorized` with type `ndarray[tuple[Any, ...], dtype[Any]]`", + "description": "`ndarray | spmatrix` is not assignable to variable `labels_tags_vectorized` with type `ndarray`", + "concise_description": "`ndarray | spmatrix` is not assignable to variable `labels_tags_vectorized` with type `ndarray`", "severity": "error" }, { - "line": 424, + "line": 466, "column": 18, - "stop_line": 424, + "stop_line": 466, "stop_column": 42, "path": "src/documents/classifier.py", "code": -2, @@ -301,9 +229,9 @@ "severity": "error" }, { - "line": 430, + "line": 472, "column": 26, - "stop_line": 430, + "stop_line": 472, "stop_column": 44, "path": "src/documents/classifier.py", "code": -2, @@ -313,9 +241,9 @@ "severity": "error" }, { - "line": 487, + "line": 529, "column": 22, - "stop_line": 487, + "stop_line": 529, "stop_column": 52, "path": "src/documents/classifier.py", "code": -2, @@ -325,9 +253,9 @@ "severity": "error" }, { - "line": 522, + "line": 564, "column": 24, - "stop_line": 522, + "stop_line": 564, "stop_column": 61, "path": "src/documents/classifier.py", "code": -2, @@ -337,57 +265,9 @@ "severity": "error" }, { - "line": 79, - "column": 5, - "stop_line": 79, - "stop_column": 16, - "path": "src/documents/conditionals.py", - "code": -2, - "name": "unreachable", - "description": "This `return` statement is unreachable", - "concise_description": "This `return` statement is unreachable", - "severity": "error" - }, - { - "line": 93, - "column": 5, - "stop_line": 93, - "stop_column": 16, - "path": "src/documents/conditionals.py", - "code": -2, - "name": "unreachable", - "description": "This `return` statement is unreachable", - "concise_description": "This `return` statement is unreachable", - "severity": "error" - }, - { - "line": 109, - "column": 5, - "stop_line": 109, - "stop_column": 16, - "path": "src/documents/conditionals.py", - "code": -2, - "name": "unreachable", - "description": "This `return` statement is unreachable", - "concise_description": "This `return` statement is unreachable", - "severity": "error" - }, - { - "line": 122, - "column": 5, - "stop_line": 122, - "stop_column": 16, - "path": "src/documents/conditionals.py", - "code": -2, - "name": "unreachable", - "description": "This `return` statement is unreachable", - "concise_description": "This `return` statement is unreachable", - "severity": "error" - }, - { - "line": 68, + "line": 78, "column": 9, - "stop_line": 68, + "stop_line": 78, "stop_column": 23, "path": "src/documents/consumer.py", "code": -2, @@ -397,9 +277,9 @@ "severity": "error" }, { - "line": 113, + "line": 197, "column": 26, - "stop_line": 113, + "stop_line": 197, "stop_column": 35, "path": "src/documents/consumer.py", "code": -2, @@ -409,9 +289,9 @@ "severity": "error" }, { - "line": 115, + "line": 199, "column": 9, - "stop_line": 115, + "stop_line": 199, "stop_column": 33, "path": "src/documents/consumer.py", "code": -2, @@ -421,9 +301,9 @@ "severity": "error" }, { - "line": 117, + "line": 201, "column": 25, - "stop_line": 117, + "stop_line": 201, "stop_column": 38, "path": "src/documents/consumer.py", "code": -2, @@ -433,9 +313,9 @@ "severity": "error" }, { - "line": 117, + "line": 201, "column": 51, - "stop_line": 117, + "stop_line": 201, "stop_column": 65, "path": "src/documents/consumer.py", "code": -2, @@ -445,9 +325,9 @@ "severity": "error" }, { - "line": 127, + "line": 211, "column": 9, - "stop_line": 127, + "stop_line": 211, "stop_column": 24, "path": "src/documents/consumer.py", "code": -2, @@ -457,9 +337,33 @@ "severity": "error" }, { - "line": 134, + "line": 217, + "column": 22, + "stop_line": 217, + "stop_column": 35, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 217, + "column": 48, + "stop_line": 217, + "stop_column": 61, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 218, "column": 29, - "stop_line": 134, + "stop_line": 218, "stop_column": 42, "path": "src/documents/consumer.py", "code": -2, @@ -469,10 +373,10 @@ "severity": "error" }, { - "line": 134, - "column": 55, - "stop_line": 134, - "stop_column": 68, + "line": 219, + "column": 16, + "stop_line": 219, + "stop_column": 29, "path": "src/documents/consumer.py", "code": -2, "name": "missing-attribute", @@ -481,10 +385,10 @@ "severity": "error" }, { - "line": 135, - "column": 36, - "stop_line": 135, - "stop_column": 49, + "line": 220, + "column": 30, + "stop_line": 220, + "stop_column": 43, "path": "src/documents/consumer.py", "code": -2, "name": "missing-attribute", @@ -493,10 +397,10 @@ "severity": "error" }, { - "line": 136, - "column": 20, - "stop_line": 136, - "stop_column": 33, + "line": 221, + "column": 16, + "stop_line": 221, + "stop_column": 29, "path": "src/documents/consumer.py", "code": -2, "name": "missing-attribute", @@ -505,69 +409,33 @@ "severity": "error" }, { - "line": 137, - "column": 37, - "stop_line": 137, - "stop_column": 50, - "path": "src/documents/consumer.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", - "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", - "severity": "error" - }, - { - "line": 138, - "column": 20, - "stop_line": 138, - "stop_column": 33, - "path": "src/documents/consumer.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", - "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", - "severity": "error" - }, - { - "line": 150, - "column": 9, - "stop_line": 150, - "stop_column": 17, - "path": "src/documents/consumer.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `ConsumerPluginMixin` has no attribute `log`", - "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `log`", - "severity": "error" - }, - { - "line": 196, + "line": 319, "column": 17, - "stop_line": 196, + "stop_line": 319, "stop_column": 25, "path": "src/documents/consumer.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", - "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "description": "Argument `LoggerAdapter[Logger]` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `LoggerAdapter[Logger]` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", "severity": "error" }, { - "line": 273, + "line": 396, "column": 17, - "stop_line": 273, + "stop_line": 396, "stop_column": 25, "path": "src/documents/consumer.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", - "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "description": "Argument `LoggerAdapter[Logger]` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `LoggerAdapter[Logger]` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", "severity": "error" }, { - "line": 321, + "line": 441, "column": 25, - "stop_line": 325, + "stop_line": 445, "stop_column": 26, "path": "src/documents/consumer.py", "code": -2, @@ -577,46 +445,70 @@ "severity": "error" }, { - "line": 326, + "line": 446, "column": 32, - "stop_line": 326, + "stop_line": 446, "stop_column": 40, "path": "src/documents/consumer.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", - "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "description": "Argument `LoggerAdapter[Logger]` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `LoggerAdapter[Logger]` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", "severity": "error" }, { - "line": 436, - "column": 66, - "stop_line": 436, - "stop_column": 70, + "line": 517, + "column": 25, + "stop_line": 517, + "stop_column": 33, "path": "src/documents/consumer.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `content` with type `str` in function `documents.plugins.date_parsing.base.DateParserPluginBase.parse`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `content` with type `str` in function `documents.plugins.date_parsing.base.DateParserPluginBase.parse`", + "description": "Argument `LoggerAdapter[Logger]` is not assignable to parameter `log` with type `Logger | None` in function `should_produce_archive`", + "concise_description": "Argument `LoggerAdapter[Logger]` is not assignable to parameter `log` with type `Logger | None` in function `should_produce_archive`", "severity": "error" }, { - "line": 481, - "column": 26, - "stop_line": 481, - "stop_column": 30, + "line": 547, + "column": 74, + "stop_line": 547, + "stop_column": 78, "path": "src/documents/consumer.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `text` with type `str` in function `ConsumerPlugin._store`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `text` with type `str` in function `ConsumerPlugin._store`", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.plugins.date_parsing.base.DateParserPluginBase.parse`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.plugins.date_parsing.base.DateParserPluginBase.parse`", "severity": "error" }, { - "line": 523, - "column": 54, - "stop_line": 523, - "stop_column": 75, + "line": 629, + "column": 33, + "stop_line": 629, + "stop_column": 60, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `log_create`", + "concise_description": "Object of class `Manager` has no attribute `log_create`", + "severity": "error" + }, + { + "line": 644, + "column": 38, + "stop_line": 644, + "stop_column": 42, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `text` with type `str` in function `ConsumerPlugin._store`", + "concise_description": "Argument `str | None` is not assignable to parameter `text` with type `str` in function `ConsumerPlugin._store`", + "severity": "error" + }, + { + "line": 711, + "column": 62, + "stop_line": 711, + "stop_column": 83, "path": "src/documents/consumer.py", "code": -2, "name": "bad-argument-type", @@ -625,9 +517,21 @@ "severity": "error" }, { - "line": 610, + "line": 718, + "column": 37, + "stop_line": 718, + "stop_column": 58, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `Path` in function `documents.utils.compute_checksum`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `Path` in function `documents.utils.compute_checksum`", + "severity": "error" + }, + { + "line": 802, "column": 13, - "stop_line": 610, + "stop_line": 802, "stop_column": 31, "path": "src/documents/consumer.py", "code": -2, @@ -637,9 +541,9 @@ "severity": "error" }, { - "line": 611, + "line": 803, "column": 13, - "stop_line": 611, + "stop_line": 803, "stop_column": 26, "path": "src/documents/consumer.py", "code": -2, @@ -649,9 +553,9 @@ "severity": "error" }, { - "line": 612, + "line": 804, "column": 13, - "stop_line": 612, + "stop_line": 804, "stop_column": 27, "path": "src/documents/consumer.py", "code": -2, @@ -661,9 +565,9 @@ "severity": "error" }, { - "line": 731, + "line": 926, "column": 31, - "stop_line": 731, + "stop_line": 926, "stop_column": 46, "path": "src/documents/consumer.py", "code": -2, @@ -673,9 +577,9 @@ "severity": "error" }, { - "line": 804, + "line": 998, "column": 21, - "stop_line": 804, + "stop_line": 998, "stop_column": 36, "path": "src/documents/consumer.py", "code": -2, @@ -685,9 +589,9 @@ "severity": "error" }, { - "line": 805, + "line": 999, "column": 24, - "stop_line": 805, + "stop_line": 999, "stop_column": 51, "path": "src/documents/consumer.py", "code": -2, @@ -697,9 +601,9 @@ "severity": "error" }, { - "line": 806, + "line": 1000, "column": 30, - "stop_line": 806, + "stop_line": 1000, "stop_column": 48, "path": "src/documents/consumer.py", "code": -2, @@ -709,9 +613,9 @@ "severity": "error" }, { - "line": 806, + "line": 1000, "column": 58, - "stop_line": 806, + "stop_line": 1000, "stop_column": 76, "path": "src/documents/consumer.py", "code": -2, @@ -721,9 +625,9 @@ "severity": "error" }, { - "line": 807, + "line": 1001, "column": 28, - "stop_line": 807, + "stop_line": 1001, "stop_column": 40, "path": "src/documents/consumer.py", "code": -2, @@ -733,9 +637,9 @@ "severity": "error" }, { - "line": 814, + "line": 1008, "column": 65, - "stop_line": 814, + "stop_line": 1008, "stop_column": 77, "path": "src/documents/consumer.py", "code": -2, @@ -745,9 +649,9 @@ "severity": "error" }, { - "line": 891, + "line": 1085, "column": 16, - "stop_line": 891, + "stop_line": 1085, "stop_column": 51, "path": "src/documents/consumer.py", "code": -2, @@ -780,18 +684,6 @@ "concise_description": "Argument `bytes | None` is not assignable to parameter `buffer` with type `Buffer` in function `_io.BufferedWriter.write`", "severity": "error" }, - { - "line": 109, - "column": 13, - "stop_line": 112, - "stop_column": 26, - "path": "src/documents/data_models.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `list` has no attribute `values_list`", - "concise_description": "Object of class `list` has no attribute `values_list`", - "severity": "error" - }, { "line": 115, "column": 13, @@ -805,9 +697,21 @@ "severity": "error" }, { - "line": 131, + "line": 121, + "column": 13, + "stop_line": 124, + "stop_column": 26, + "path": "src/documents/data_models.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `list` has no attribute `values_list`", + "concise_description": "Object of class `list` has no attribute `values_list`", + "severity": "error" + }, + { + "line": 137, "column": 26, - "stop_line": 131, + "stop_line": 137, "stop_column": 43, "path": "src/documents/data_models.py", "code": -2, @@ -817,9 +721,9 @@ "severity": "error" }, { - "line": 132, + "line": 138, "column": 35, - "stop_line": 132, + "stop_line": 138, "stop_column": 59, "path": "src/documents/data_models.py", "code": -2, @@ -829,9 +733,9 @@ "severity": "error" }, { - "line": 136, + "line": 142, "column": 26, - "stop_line": 136, + "stop_line": 142, "stop_column": 43, "path": "src/documents/data_models.py", "code": -2, @@ -841,9 +745,9 @@ "severity": "error" }, { - "line": 137, + "line": 143, "column": 37, - "stop_line": 137, + "stop_line": 143, "stop_column": 61, "path": "src/documents/data_models.py", "code": -2, @@ -853,9 +757,9 @@ "severity": "error" }, { - "line": 165, + "line": 172, "column": 22, - "stop_line": 165, + "stop_line": 172, "stop_column": 65, "path": "src/documents/data_models.py", "code": -2, @@ -865,9 +769,57 @@ "severity": "error" }, { - "line": 174, + "line": 143, + "column": 12, + "stop_line": 143, + "stop_column": 36, + "path": "src/documents/file_handling.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 144, + "column": 31, + "stop_line": 144, + "stop_column": 60, + "path": "src/documents/file_handling.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `path`", + "concise_description": "Object of class `object` has no attribute `path`", + "severity": "error" + }, + { + "line": 157, + "column": 53, + "stop_line": 157, + "stop_column": 64, + "path": "src/documents/file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `document` with type `Document` in function `format_filename`", + "concise_description": "Argument `Document | None` is not assignable to parameter `document` with type `Document` in function `format_filename`", + "severity": "error" + }, + { + "line": 181, + "column": 16, + "stop_line": 181, + "stop_column": 30, + "path": "src/documents/file_handling.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `pk`", + "concise_description": "Object of class `NoneType` has no attribute `pk`", + "severity": "error" + }, + { + "line": 206, "column": 51, - "stop_line": 174, + "stop_line": 206, "stop_column": 61, "path": "src/documents/filters.py", "code": -2, @@ -877,9 +829,9 @@ "severity": "error" }, { - "line": 227, + "line": 262, "column": 31, - "stop_line": 227, + "stop_line": 262, "stop_column": 51, "path": "src/documents/filters.py", "code": -2, @@ -889,9 +841,9 @@ "severity": "error" }, { - "line": 259, + "line": 294, "column": 25, - "stop_line": 259, + "stop_line": 294, "stop_column": 66, "path": "src/documents/filters.py", "code": -2, @@ -901,21 +853,21 @@ "severity": "error" }, { - "line": 286, + "line": 321, "column": 47, - "stop_line": 286, + "stop_line": 321, "stop_column": 76, "path": "src/documents/filters.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `dict[Unknown | None, Unknown]` is not assignable to parameter `detail` with type `ErrorDetail | Mapping[str, Unknown] | Sequence[Unknown] | _StrPromise | dict[str, Unknown] | list[Unknown] | str | None` in function `rest_framework.exceptions.APIException.__init__`", - "concise_description": "Argument `dict[Unknown | None, Unknown]` is not assignable to parameter `detail` with type `ErrorDetail | Mapping[str, Unknown] | Sequence[Unknown] | _StrPromise | dict[str, Unknown] | list[Unknown] | str | None` in function `rest_framework.exceptions.APIException.__init__`", + "description": "Argument `dict[Unknown | None, _APIExceptionInput]` is not assignable to parameter `detail` with type `ErrorDetail | Mapping[str, _APIExceptionInput] | Sequence[_APIExceptionInput] | _StrPromise | dict[str, _Detail] | list[_Detail] | str | None` in function `rest_framework.exceptions.APIException.__init__`", + "concise_description": "Argument `dict[Unknown | None, _APIExceptionInput]` is not assignable to parameter `detail` with type `ErrorDetail | Mapping[str, _APIExceptionInput] | Sequence[_APIExceptionInput] | _StrPromise | dict[str, _Detail] | list[_Detail] | str | None` in function `rest_framework.exceptions.APIException.__init__`", "severity": "error" }, { - "line": 295, + "line": 330, "column": 5, - "stop_line": 295, + "stop_line": 330, "stop_column": 26, "path": "src/documents/filters.py", "code": -2, @@ -925,69 +877,45 @@ "severity": "error" }, { - "line": 600, + "line": 635, "column": 26, - "stop_line": 600, + "stop_line": 635, "stop_column": 49, "path": "src/documents/filters.py", "code": -2, "name": "missing-attribute", - "description": "Object of class `ForeignObjectRel` has no attribute `deconstruct`\nObject of class `GenericForeignKey` has no attribute `deconstruct`", - "concise_description": "Object of class `ForeignObjectRel` has no attribute `deconstruct`\nObject of class `GenericForeignKey` has no attribute `deconstruct`", + "description": "Object of class `ForeignObjectRel` has no attribute `deconstruct`", + "concise_description": "Object of class `ForeignObjectRel` has no attribute `deconstruct`", "severity": "error" }, { - "line": 603, + "line": 638, "column": 17, - "stop_line": 603, + "stop_line": 638, "stop_column": 28, "path": "src/documents/filters.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `Field[Unknown, Unknown] | ForeignObjectRel | GenericForeignKey` is not assignable to parameter `model_field` with type `Field[Unknown, Unknown]` in function `rest_framework.serializers.ModelSerializer.build_standard_field`", - "concise_description": "Argument `Field[Unknown, Unknown] | ForeignObjectRel | GenericForeignKey` is not assignable to parameter `model_field` with type `Field[Unknown, Unknown]` in function `rest_framework.serializers.ModelSerializer.build_standard_field`", + "description": "Argument `Field[Any, Any] | ForeignObjectRel` is not assignable to parameter `model_field` with type `Field[Unknown, Unknown]` in function `rest_framework.serializers.ModelSerializer.build_standard_field`", + "concise_description": "Argument `Field[Any, Any] | ForeignObjectRel` is not assignable to parameter `model_field` with type `Field[Unknown, Unknown]` in function `rest_framework.serializers.ModelSerializer.build_standard_field`", "severity": "error" }, { - "line": 660, - "column": 17, - "stop_line": 660, - "stop_column": 42, + "line": 695, + "column": 18, + "stop_line": 695, + "stop_column": 41, "path": "src/documents/filters.py", "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `set.__init__` called with arguments: (Any | None)\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", - "concise_description": "No matching overload found for function `set.__init__` called with arguments: (Any | None)", + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `iterable` with type `Iterable[Any]` in function `set.__init__`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `iterable` with type `Iterable[Any]` in function `set.__init__`", "severity": "error" }, { - "line": 845, - "column": 9, - "stop_line": 845, - "stop_column": 24, - "path": "src/documents/filters.py", - "code": -2, - "name": "bad-override", - "description": "Class member `ObjectOwnedOrGrantedPermissionsFilter.filter_queryset` overrides parent class `ObjectPermissionsFilter` in an inconsistent manner\n `ObjectOwnedOrGrantedPermissionsFilter.filter_queryset` has type `BoundMethod[ObjectOwnedOrGrantedPermissionsFilter, (self: ObjectOwnedOrGrantedPermissionsFilter, request: Unknown, queryset: Unknown, view: Unknown) -> type[Any]]`, which is not assignable to `BoundMethod[ObjectOwnedOrGrantedPermissionsFilter, (self: ObjectOwnedOrGrantedPermissionsFilter, request: Unknown, queryset: Unknown, view: Unknown) -> QuerySet[Unknown, Unknown]]`, the type of `ObjectPermissionsFilter.filter_queryset`", - "concise_description": "Class member `ObjectOwnedOrGrantedPermissionsFilter.filter_queryset` overrides parent class `ObjectPermissionsFilter` in an inconsistent manner", - "severity": "error" - }, - { - "line": 858, - "column": 9, - "stop_line": 858, - "stop_column": 24, - "path": "src/documents/filters.py", - "code": -2, - "name": "bad-override", - "description": "Class member `ObjectOwnedPermissionsFilter.filter_queryset` overrides parent class `ObjectPermissionsFilter` in an inconsistent manner\n `ObjectOwnedPermissionsFilter.filter_queryset` has type `BoundMethod[ObjectOwnedPermissionsFilter, (self: ObjectOwnedPermissionsFilter, request: Unknown, queryset: Unknown, view: Unknown) -> type[Any] | Unknown]`, which is not assignable to `BoundMethod[ObjectOwnedPermissionsFilter, (self: ObjectOwnedPermissionsFilter, request: Unknown, queryset: Unknown, view: Unknown) -> QuerySet[Unknown, Unknown]]`, the type of `ObjectPermissionsFilter.filter_queryset`", - "concise_description": "Class member `ObjectOwnedPermissionsFilter.filter_queryset` overrides parent class `ObjectPermissionsFilter` in an inconsistent manner", - "severity": "error" - }, - { - "line": 928, + "line": 969, "column": 25, - "stop_line": 928, + "stop_line": 969, "stop_column": 45, "path": "src/documents/filters.py", "code": -2, @@ -996,174 +924,6 @@ "concise_description": "Object of class `NoneType` has no attribute `get`", "severity": "error" }, - { - "line": 138, - "column": 1, - "stop_line": 138, - "stop_column": 16, - "path": "src/documents/index.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `(*, optimize: bool | Unknown = False) -> AsyncWriter` is not assignable to parameter `func` with type `(*, optimize: bool | Unknown = False) -> Iterator[@_]` in function `contextlib.contextmanager`\n Protocol `Iterator` requires attribute `__next__`", - "concise_description": "Argument `(*, optimize: bool | Unknown = False) -> AsyncWriter` is not assignable to parameter `func` with type `(*, optimize: bool | Unknown = False) -> Iterator[@_]` in function `contextlib.contextmanager`", - "severity": "error" - }, - { - "line": 139, - "column": 45, - "stop_line": 139, - "stop_column": 56, - "path": "src/documents/index.py", - "code": -2, - "name": "bad-return", - "description": "Generator function should return `Generator`", - "concise_description": "Generator function should return `Generator`", - "severity": "error" - }, - { - "line": 151, - "column": 1, - "stop_line": 151, - "stop_column": 16, - "path": "src/documents/index.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `() -> Searcher` is not assignable to parameter `func` with type `() -> Iterator[@_]` in function `contextlib.contextmanager`\n Protocol `Iterator` requires attribute `__next__`", - "concise_description": "Argument `() -> Searcher` is not assignable to parameter `func` with type `() -> Iterator[@_]` in function `contextlib.contextmanager`", - "severity": "error" - }, - { - "line": 152, - "column": 30, - "stop_line": 152, - "stop_column": 38, - "path": "src/documents/index.py", - "code": -2, - "name": "bad-return", - "description": "Generator function should return `Generator`", - "concise_description": "Generator function should return `Generator`", - "severity": "error" - }, - { - "line": 187, - "column": 37, - "stop_line": 187, - "stop_column": 41, - "path": "src/documents/index.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `str` has no attribute `id`", - "concise_description": "Object of class `str` has no attribute `id`", - "severity": "error" - }, - { - "line": 211, - "column": 32, - "stop_line": 211, - "stop_column": 49, - "path": "src/documents/index.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Document` has no attribute `custom_fields`", - "concise_description": "Object of class `Document` has no attribute `custom_fields`", - "severity": "error" - }, - { - "line": 257, - "column": 9, - "stop_line": 257, - "stop_column": 21, - "path": "src/documents/index.py", - "code": -2, - "name": "bad-param-name-override", - "description": "Class member `MappedDocIdSet.__contains__` overrides parent class `DocIdSet` in an inconsistent manner\n Got parameter name `docnum`, expected `i`", - "concise_description": "Class member `MappedDocIdSet.__contains__` overrides parent class `DocIdSet` in an inconsistent manner", - "severity": "error" - }, - { - "line": 258, - "column": 50, - "stop_line": 258, - "stop_column": 58, - "path": "src/documents/index.py", - "code": -2, - "name": "missing-argument", - "description": "Missing argument `docnum` in function `whoosh.reading.IndexReader.stored_fields`", - "concise_description": "Missing argument `docnum` in function `whoosh.reading.IndexReader.stored_fields`", - "severity": "error" - }, - { - "line": 344, - "column": 36, - "stop_line": 344, - "stop_column": 52, - "path": "src/documents/index.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `list` has no attribute `score`", - "concise_description": "Object of class `list` has no attribute `score`", - "severity": "error" - }, - { - "line": 380, - "column": 20, - "stop_line": 380, - "stop_column": 43, - "path": "src/documents/index.py", - "code": -2, - "name": "bad-assignment", - "description": "`ManualResultsPage` is not assignable to variable `page` with type `ResultsPage`", - "concise_description": "`ManualResultsPage` is not assignable to variable `page` with type `ResultsPage`", - "severity": "error" - }, - { - "line": 447, - "column": 9, - "stop_line": 447, - "stop_column": 19, - "path": "src/documents/index.py", - "code": -2, - "name": "bad-override", - "description": "Class member `DelayedFullTextQuery._get_query` overrides parent class `DelayedQuery` in an inconsistent manner\n `DelayedFullTextQuery._get_query` has type `BoundMethod[DelayedFullTextQuery, (self: DelayedFullTextQuery) -> tuple[Unknown, ...]]`, which is not assignable to `BoundMethod[DelayedFullTextQuery, (self: DelayedFullTextQuery) -> Never]`, the type of `DelayedQuery._get_query`", - "concise_description": "Class member `DelayedFullTextQuery._get_query` overrides parent class `DelayedQuery` in an inconsistent manner", - "severity": "error" - }, - { - "line": 485, - "column": 9, - "stop_line": 485, - "stop_column": 19, - "path": "src/documents/index.py", - "code": -2, - "name": "bad-override", - "description": "Class member `DelayedMoreLikeThisQuery._get_query` overrides parent class `DelayedQuery` in an inconsistent manner\n `DelayedMoreLikeThisQuery._get_query` has type `BoundMethod[DelayedMoreLikeThisQuery, (self: DelayedMoreLikeThisQuery) -> tuple[Unknown, ...]]`, which is not assignable to `BoundMethod[DelayedMoreLikeThisQuery, (self: DelayedMoreLikeThisQuery) -> Never]`, the type of `DelayedQuery._get_query`", - "concise_description": "Class member `DelayedMoreLikeThisQuery._get_query` overrides parent class `DelayedQuery` in an inconsistent manner", - "severity": "error" - }, - { - "line": 637, - "column": 21, - "stop_line": 637, - "stop_column": 26, - "path": "src/documents/index.py", - "code": -2, - "name": "unbound-name", - "description": "`start` may be uninitialized", - "concise_description": "`start` may be uninitialized", - "severity": "error" - }, - { - "line": 638, - "column": 19, - "stop_line": 638, - "stop_column": 22, - "path": "src/documents/index.py", - "code": -2, - "name": "unbound-name", - "description": "`end` may be uninitialized", - "concise_description": "`end` may be uninitialized", - "severity": "error" - }, { "line": 13, "column": 31, @@ -1177,21 +937,33 @@ "severity": "error" }, { - "line": 35, - "column": 9, - "stop_line": 35, - "stop_column": 15, - "path": "src/documents/management/commands/convert_mariadb_uuid.py", + "line": 118, + "column": 13, + "stop_line": 118, + "stop_column": 29, + "path": "src/documents/management/commands/document_exporter.py", "code": -2, - "name": "bad-override", - "description": "Class member `Command.handle` overrides parent class `BaseCommand` in an inconsistent manner\n `Command.handle` has type `BoundMethod[Command, (self: Command, **options: Unknown) -> None]`, which is not assignable to `BoundMethod[Command, (self: Command, *args: Any, **options: Any) -> str | None]`, the type of `BaseCommand.handle`", - "concise_description": "Class member `Command.handle` overrides parent class `BaseCommand` in an inconsistent manner", + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `write`", + "concise_description": "Object of class `NoneType` has no attribute `write`", "severity": "error" }, { - "line": 426, + "line": 121, + "column": 9, + "stop_line": 121, + "stop_column": 25, + "path": "src/documents/management/commands/document_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `write`", + "concise_description": "Object of class `NoneType` has no attribute `write`", + "severity": "error" + }, + { + "line": 564, "column": 41, - "stop_line": 426, + "stop_line": 564, "stop_column": 50, "path": "src/documents/management/commands/document_exporter.py", "code": -2, @@ -1201,33 +973,9 @@ "severity": "error" }, { - "line": 571, - "column": 32, - "stop_line": 571, - "stop_column": 60, - "path": "src/documents/management/commands/document_exporter.py", - "code": -2, - "name": "bad-index", - "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['exporter_key'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", - "concise_description": "Cannot index into `str`", - "severity": "error" - }, - { - "line": 572, - "column": 32, - "stop_line": 572, - "stop_column": 54, - "path": "src/documents/management/commands/document_exporter.py", - "code": -2, - "name": "bad-index", - "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['fields'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", - "concise_description": "Cannot index into `str`", - "severity": "error" - }, - { - "line": 104, + "line": 91, "column": 38, - "stop_line": 104, + "stop_line": 91, "stop_column": 70, "path": "src/documents/management/commands/document_fuzzy_match.py", "code": -2, @@ -1237,9 +985,9 @@ "severity": "error" }, { - "line": 237, + "line": 238, "column": 14, - "stop_line": 237, + "stop_line": 238, "stop_column": 18, "path": "src/documents/management/commands/document_importer.py", "code": -2, @@ -1249,123 +997,75 @@ "severity": "error" }, { - "line": 413, - "column": 50, - "stop_line": 413, - "stop_column": 71, + "line": 420, + "column": 29, + "stop_line": 420, + "stop_column": 51, "path": "src/documents/management/commands/document_importer.py", "code": -2, - "name": "bad-argument-type", - "description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", - "concise_description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", - "severity": "error" - }, - { - "line": 417, - "column": 62, - "stop_line": 417, - "stop_column": 83, - "path": "src/documents/management/commands/document_importer.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Path | None` is not assignable to parameter `dest` with type `Path | str` in function `documents.utils.copy_file_with_basic_stats`", - "concise_description": "Argument `Path | None` is not assignable to parameter `dest` with type `Path | str` in function `documents.utils.copy_file_with_basic_stats`", - "severity": "error" - }, - { - "line": 432, - "column": 39, - "stop_line": 432, - "stop_column": 65, - "path": "src/documents/management/commands/document_importer.py", - "code": -2, - "name": "bad-index", - "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['model_name'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", - "concise_description": "Cannot index into `str`", - "severity": "error" - }, - { - "line": 433, - "column": 37, - "stop_line": 433, - "stop_column": 59, - "path": "src/documents/management/commands/document_importer.py", - "code": -2, - "name": "bad-index", - "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['fields'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", - "concise_description": "Cannot index into `str`", - "severity": "error" - }, - { - "line": 14, - "column": 9, - "stop_line": 14, - "stop_column": 19, - "path": "src/documents/management/commands/loaddata_stdin.py", - "code": -2, - "name": "bad-override", - "description": "Class member `Command.parse_name` overrides parent class `Command` in an inconsistent manner\n `Command.parse_name` has type `BoundMethod[Command, (self: Command, fixture_name: Unknown) -> tuple[Literal['-'], Literal['json'], Literal['stdin']] | None]`, which is not assignable to `BoundMethod[Command, (self: Command, fixture_name: str) -> tuple[str, str | None, str | None]]`, the type of `Command.parse_name`", - "concise_description": "Class member `Command.parse_name` overrides parent class `Command` in an inconsistent manner", - "severity": "error" - }, - { - "line": 15, - "column": 45, - "stop_line": 15, - "stop_column": 75, - "path": "src/documents/management/commands/loaddata_stdin.py", - "code": -2, "name": "unsupported-operation", - "description": "Cannot set item in `dict[str | None, tuple[(str, _ReadBinaryMode) -> BufferedReader[_BufferedReaderStream]]]`\n Argument `tuple[(x: str, y: _ReadBinaryMode) -> TextIO | Any, None]` is not assignable to parameter `value` with type `tuple[(str, _ReadBinaryMode) -> BufferedReader[_BufferedReaderStream]]` in function `dict.__setitem__`", - "concise_description": "Cannot set item in `dict[str | None, tuple[(str, _ReadBinaryMode) -> BufferedReader[_BufferedReaderStream]]]`", + "description": "`/` is not supported between `Path` and `None`\n Argument `None` is not assignable to parameter `key` with type `PathLike[str] | str` in function `pathlib.PurePath.__truediv__`", + "concise_description": "`/` is not supported between `Path` and `None`", "severity": "error" }, { - "line": 19, - "column": 9, - "stop_line": 19, - "stop_column": 22, - "path": "src/documents/management/commands/loaddata_stdin.py", - "code": -2, - "name": "bad-override", - "description": "Class member `Command.find_fixtures` overrides parent class `Command` in an inconsistent manner\n `Command.find_fixtures` has type `BoundMethod[Command, (self: Command, fixture_label: Unknown) -> list[tuple[str, str | None, str | None]] | list[tuple[str, None, str]]]`, which is not assignable to `BoundMethod[Command, (self: Command, fixture_label: str) -> list[tuple[str, str | None, str | None]]]`, the type of `Command.find_fixtures`", - "concise_description": "Class member `Command.find_fixtures` overrides parent class `Command` in an inconsistent manner", - "severity": "error" - }, - { - "line": 33, - "column": 28, - "stop_line": 33, - "stop_column": 47, - "path": "src/documents/management/commands/mixins.py", + "line": 463, + "column": 35, + "stop_line": 463, + "stop_column": 60, + "path": "src/documents/management/commands/document_importer.py", "code": -2, "name": "unsupported-operation", - "description": "`//` is not supported between `None` and `Literal[4]`\n Argument `None` is not assignable to parameter `value` with type `int` in function `int.__rfloordiv__`", - "concise_description": "`//` is not supported between `None` and `Literal[4]`", + "description": "`/` is not supported between `Path` and `None`\n Argument `None` is not assignable to parameter `key` with type `PathLike[str] | str` in function `pathlib.PurePath.__truediv__`", + "concise_description": "`/` is not supported between `Path` and `None`", "severity": "error" }, { - "line": 94, + "line": 49, + "column": 42, + "stop_line": 49, + "stop_column": 69, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.classifier.DocumentClassifier.predict_correspondent`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.classifier.DocumentClassifier.predict_correspondent`", + "severity": "error" + }, + { + "line": 81, + "column": 42, + "stop_line": 81, + "stop_column": 69, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.classifier.DocumentClassifier.predict_document_type`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.classifier.DocumentClassifier.predict_document_type`", + "severity": "error" + }, + { + "line": 112, "column": 33, - "stop_line": 111, - "stop_column": 6, - "path": "src/documents/management/commands/mixins.py", + "stop_line": 112, + "stop_column": 60, + "path": "src/documents/matching.py", "code": -2, - "name": "bad-assignment", - "description": "`list[dict[str, list[str] | str]]` is not assignable to `CryptFields`", - "concise_description": "`list[dict[str, list[str] | str]]` is not assignable to `CryptFields`", + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.classifier.DocumentClassifier.predict_tags`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.classifier.DocumentClassifier.predict_tags`", "severity": "error" }, { - "line": 19, - "column": 9, - "stop_line": 19, - "stop_column": 15, - "path": "src/documents/management/commands/prune_audit_logs.py", + "line": 139, + "column": 41, + "stop_line": 139, + "stop_column": 68, + "path": "src/documents/matching.py", "code": -2, - "name": "bad-override", - "description": "Class member `Command.handle` overrides parent class `BaseCommand` in an inconsistent manner\n `Command.handle` has type `BoundMethod[Command, (self: Command, **options: Unknown) -> None]`, which is not assignable to `BoundMethod[Command, (self: Command, *args: Any, **options: Any) -> str | None]`, the type of `BaseCommand.handle`", - "concise_description": "Class member `Command.handle` overrides parent class `BaseCommand` in an inconsistent manner", + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.classifier.DocumentClassifier.predict_storage_path`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `documents.classifier.DocumentClassifier.predict_storage_path`", "severity": "error" }, { @@ -1436,8 +1136,8 @@ "path": "src/documents/matching.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `set[Any] | None` is not assignable to parameter `s` with type `Iterable[Any]` in function `set.issubset`\n Protocol `Iterable` requires attribute `__iter__`", - "concise_description": "Argument `set[Any] | None` is not assignable to parameter `s` with type `Iterable[Any]` in function `set.issubset`", + "description": "Argument `set[Any] | None` is not assignable to parameter `s` with type `Iterable[object]` in function `set.issubset`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `set[Any] | None` is not assignable to parameter `s` with type `Iterable[object]` in function `set.issubset`", "severity": "error" }, { @@ -1489,9 +1189,9 @@ "severity": "error" }, { - "line": 372, + "line": 451, "column": 21, - "stop_line": 372, + "stop_line": 451, "stop_column": 38, "path": "src/documents/models.py", "code": -2, @@ -1501,33 +1201,21 @@ "severity": "error" }, { - "line": 872, + "line": 959, "column": 9, - "stop_line": 872, + "stop_line": 959, "stop_column": 15, "path": "src/documents/models.py", "code": -2, "name": "bad-override", - "description": "Class member `ShareLinkBundle.delete` overrides parent class `Model` in an inconsistent manner\n `ShareLinkBundle.delete` has type `BoundMethod[ShareLinkBundle, (self: ShareLinkBundle, using: Unknown | None = None, *, keep_parents: bool | Unknown = False) -> tuple[int, dict[str, int]]]`, which is not assignable to `BoundMethod[ShareLinkBundle, (self: ShareLinkBundle, using: Any | None = None, keep_parents: bool = False) -> tuple[int, dict[str, int]]]`, the type of `Model.delete`", + "description": "Class member `ShareLinkBundle.delete` overrides parent class `Model` in an inconsistent manner\n `ShareLinkBundle.delete` has type `(self: ShareLinkBundle, using: Unknown | None = None, *, keep_parents: bool | Unknown = False) -> tuple[int, dict[str, int]]`, which is not assignable to `(self: ShareLinkBundle, using: Any | None = None, keep_parents: bool = False) -> tuple[int, dict[str, int]]`, the type of `Model.delete`\n Signature mismatch:\n expected: def delete(self: ShareLinkBundle, using: Any | None = None, keep_parents: bool = False) -> tuple[int, dict[str, int]]: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ parameters\n found: def delete(self: ShareLinkBundle, using: Unknown | None = None, *, keep_parents: bool | Unknown = False) -> tuple[int, dict...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ parameters", "concise_description": "Class member `ShareLinkBundle.delete` overrides parent class `Model` in an inconsistent manner", "severity": "error" }, { - "line": 1035, - "column": 31, - "stop_line": 1035, - "stop_column": 70, - "path": "src/documents/models.py", - "code": -2, - "name": "unsupported-operation", - "description": "`None` is not subscriptable", - "concise_description": "`None` is not subscriptable", - "severity": "error" - }, - { - "line": 1059, + "line": 1134, "column": 54, - "stop_line": 1059, + "stop_line": 1134, "stop_column": 74, "path": "src/documents/models.py", "code": -2, @@ -1537,9 +1225,9 @@ "severity": "error" }, { - "line": 1064, + "line": 1158, "column": 5, - "stop_line": 1064, + "stop_line": 1158, "stop_column": 13, "path": "src/documents/models.py", "code": -2, @@ -1549,153 +1237,9 @@ "severity": "error" }, { - "line": 1069, - "column": 5, - "stop_line": 1069, - "stop_column": 13, - "path": "src/documents/models.py", - "code": -2, - "name": "unbound-name", - "description": "`auditlog` may be uninitialized", - "concise_description": "`auditlog` may be uninitialized", - "severity": "error" - }, - { - "line": 1070, - "column": 5, - "stop_line": 1070, - "stop_column": 13, - "path": "src/documents/models.py", - "code": -2, - "name": "unbound-name", - "description": "`auditlog` may be uninitialized", - "concise_description": "`auditlog` may be uninitialized", - "severity": "error" - }, - { - "line": 1071, - "column": 5, - "stop_line": 1071, - "stop_column": 13, - "path": "src/documents/models.py", - "code": -2, - "name": "unbound-name", - "description": "`auditlog` may be uninitialized", - "concise_description": "`auditlog` may be uninitialized", - "severity": "error" - }, - { - "line": 1072, - "column": 5, - "stop_line": 1072, - "stop_column": 13, - "path": "src/documents/models.py", - "code": -2, - "name": "unbound-name", - "description": "`auditlog` may be uninitialized", - "concise_description": "`auditlog` may be uninitialized", - "severity": "error" - }, - { - "line": 1073, - "column": 5, - "stop_line": 1073, - "stop_column": 13, - "path": "src/documents/models.py", - "code": -2, - "name": "unbound-name", - "description": "`auditlog` may be uninitialized", - "concise_description": "`auditlog` may be uninitialized", - "severity": "error" - }, - { - "line": 1074, - "column": 5, - "stop_line": 1074, - "stop_column": 13, - "path": "src/documents/models.py", - "code": -2, - "name": "unbound-name", - "description": "`auditlog` may be uninitialized", - "concise_description": "`auditlog` may be uninitialized", - "severity": "error" - }, - { - "line": 71, - "column": 32, - "stop_line": 71, - "stop_column": 64, - "path": "src/documents/parsers.py", - "code": -2, - "name": "bad-index", - "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['mime_types'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", - "concise_description": "Cannot index into `str`", - "severity": "error" - }, - { - "line": 71, - "column": 32, - "stop_line": 71, - "stop_column": 64, - "path": "src/documents/parsers.py", - "code": -2, - "name": "unsupported-operation", - "description": "`None` is not subscriptable", - "concise_description": "`None` is not subscriptable", - "severity": "error" - }, - { - "line": 99, - "column": 32, - "stop_line": 99, - "stop_column": 64, - "path": "src/documents/parsers.py", - "code": -2, - "name": "bad-index", - "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['mime_types'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", - "concise_description": "Cannot index into `str`", - "severity": "error" - }, - { - "line": 99, - "column": 32, - "stop_line": 99, - "stop_column": 64, - "path": "src/documents/parsers.py", - "code": -2, - "name": "unsupported-operation", - "description": "`None` is not subscriptable", - "concise_description": "`None` is not subscriptable", - "severity": "error" - }, - { - "line": 121, - "column": 32, - "stop_line": 121, - "stop_column": 64, - "path": "src/documents/parsers.py", - "code": -2, - "name": "bad-index", - "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['mime_types'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", - "concise_description": "Cannot index into `str`", - "severity": "error" - }, - { - "line": 121, - "column": 32, - "stop_line": 121, - "stop_column": 64, - "path": "src/documents/parsers.py", - "code": -2, - "name": "unsupported-operation", - "description": "`None` is not subscriptable", - "concise_description": "`None` is not subscriptable", - "severity": "error" - }, - { - "line": 202, + "line": 146, "column": 28, - "stop_line": 202, + "stop_line": 146, "stop_column": 31, "path": "src/documents/parsers.py", "code": -2, @@ -1705,9 +1249,9 @@ "severity": "error" }, { - "line": 94, + "line": 123, "column": 42, - "stop_line": 94, + "stop_line": 123, "stop_column": 64, "path": "src/documents/permissions.py", "code": -2, @@ -1717,9 +1261,9 @@ "severity": "error" }, { - "line": 95, + "line": 124, "column": 35, - "stop_line": 95, + "stop_line": 124, "stop_column": 58, "path": "src/documents/permissions.py", "code": -2, @@ -1729,9 +1273,9 @@ "severity": "error" }, { - "line": 96, + "line": 125, "column": 16, - "stop_line": 96, + "stop_line": 125, "stop_column": 38, "path": "src/documents/permissions.py", "code": -2, @@ -1741,21 +1285,9 @@ "severity": "error" }, { - "line": 181, - "column": 12, - "stop_line": 181, - "stop_column": 64, - "path": "src/documents/permissions.py", - "code": -2, - "name": "bad-return", - "description": "Returned type `UnionType | type` is not assignable to declared return type `QuerySet[Unknown, Unknown]`", - "concise_description": "Returned type `UnionType | type` is not assignable to declared return type `QuerySet[Unknown, Unknown]`", - "severity": "error" - }, - { - "line": 40, + "line": 97, "column": 29, - "stop_line": 40, + "stop_line": 97, "stop_column": 48, "path": "src/documents/plugins/helpers.py", "code": -2, @@ -1764,30 +1296,6 @@ "concise_description": "`BaseChannelLayer | None` is not assignable to attribute `_channel` with type `RedisPubSubChannelLayer | None`", "severity": "error" }, - { - "line": 90, - "column": 19, - "stop_line": 90, - "stop_column": 26, - "path": "src/documents/plugins/helpers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `dict[str, str | dict[str, ProgressStatusOptions | int | str | None]]` is not assignable to parameter `payload` with type `dict[str, int | str | None]` in function `BaseStatusManager.send`", - "concise_description": "Argument `dict[str, str | dict[str, ProgressStatusOptions | int | str | None]]` is not assignable to parameter `payload` with type `dict[str, int | str | None]` in function `BaseStatusManager.send`", - "severity": "error" - }, - { - "line": 102, - "column": 19, - "stop_line": 102, - "stop_column": 26, - "path": "src/documents/plugins/helpers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `dict[str, str | dict[str, list[int]]]` is not assignable to parameter `payload` with type `dict[str, int | str | None]` in function `BaseStatusManager.send`", - "concise_description": "Argument `dict[str, str | dict[str, list[int]]]` is not assignable to parameter `payload` with type `dict[str, int | str | None]` in function `BaseStatusManager.send`", - "severity": "error" - }, { "line": 23, "column": 26, @@ -1801,9 +1309,309 @@ "severity": "error" }, { - "line": 127, + "line": 167, + "column": 24, + "stop_line": 167, + "stop_column": 51, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `writer`", + "concise_description": "Object of class `NoneType` has no attribute `writer`", + "severity": "error" + }, + { + "line": 173, + "column": 17, + "stop_line": 173, + "stop_column": 36, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `commit`", + "concise_description": "Object of class `NoneType` has no attribute `commit`", + "severity": "error" + }, + { + "line": 174, + "column": 17, + "stop_line": 174, + "stop_column": 44, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `reload`", + "concise_description": "Object of class `NoneType` has no attribute `reload`", + "severity": "error" + }, + { + "line": 203, "column": 9, - "stop_line": 127, + "stop_line": 203, + "stop_column": 34, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `add_document`", + "concise_description": "Object of class `NoneType` has no attribute `add_document`", + "severity": "error" + }, + { + "line": 213, + "column": 9, + "stop_line": 213, + "stop_column": 47, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `delete_documents_by_query`", + "concise_description": "Object of class `NoneType` has no attribute `delete_documents_by_query`", + "severity": "error" + }, + { + "line": 215, + "column": 17, + "stop_line": 215, + "stop_column": 38, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.Query.range_query`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.Query.range_query`", + "severity": "error" + }, + { + "line": 309, + "column": 50, + "stop_line": 309, + "stop_column": 75, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int | None` is not assignable to parameter `value` with type `int` in function `tantivy.tantivy.Document.add_unsigned`", + "concise_description": "Argument `int | None` is not assignable to parameter `value` with type `int` in function `tantivy.tantivy.Document.add_unsigned`", + "severity": "error" + }, + { + "line": 315, + "column": 50, + "stop_line": 315, + "stop_column": 75, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int | None` is not assignable to parameter `value` with type `int` in function `tantivy.tantivy.Document.add_unsigned`", + "concise_description": "Argument `int | None` is not assignable to parameter `value` with type `int` in function `tantivy.tantivy.Document.add_unsigned`", + "severity": "error" + }, + { + "line": 320, + "column": 49, + "stop_line": 320, + "stop_column": 73, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int | None` is not assignable to parameter `value` with type `int` in function `tantivy.tantivy.Document.add_unsigned`", + "concise_description": "Argument `int | None` is not assignable to parameter `value` with type `int` in function `tantivy.tantivy.Document.add_unsigned`", + "severity": "error" + }, + { + "line": 332, + "column": 21, + "stop_line": 332, + "stop_column": 35, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `notes`", + "concise_description": "Object of class `Document` has no attribute `notes`", + "severity": "error" + }, + { + "line": 338, + "column": 20, + "stop_line": 338, + "stop_column": 42, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 380, + "column": 43, + "stop_line": 380, + "stop_column": 50, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `str` has no attribute `pk`", + "concise_description": "Object of class `str` has no attribute `pk`", + "severity": "error" + }, + { + "line": 467, + "column": 50, + "stop_line": 467, + "stop_column": 61, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `index` with type `Index` in function `documents.search._query.parse_simple_text_query`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `index` with type `Index` in function `documents.search._query.parse_simple_text_query`", + "severity": "error" + }, + { + "line": 469, + "column": 51, + "stop_line": 469, + "stop_column": 62, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `index` with type `Index` in function `documents.search._query.parse_simple_title_query`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `index` with type `Index` in function `documents.search._query.parse_simple_title_query`", + "severity": "error" + }, + { + "line": 471, + "column": 43, + "stop_line": 471, + "stop_column": 54, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `index` with type `Index` in function `documents.search._query.parse_user_query`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `index` with type `Index` in function `documents.search._query.parse_user_query`", + "severity": "error" + }, + { + "line": 475, + "column": 57, + "stop_line": 475, + "stop_column": 69, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `documents.search._query.build_permission_filter`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `documents.search._query.build_permission_filter`", + "severity": "error" + }, + { + "line": 485, + "column": 20, + "stop_line": 485, + "stop_column": 40, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `searcher`", + "concise_description": "Object of class `NoneType` has no attribute `searcher`", + "severity": "error" + }, + { + "line": 552, + "column": 29, + "stop_line": 552, + "stop_column": 41, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.SnippetGenerator.create`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.SnippetGenerator.create`", + "severity": "error" + }, + { + "line": 566, + "column": 33, + "stop_line": 566, + "stop_column": 45, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.SnippetGenerator.create`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.SnippetGenerator.create`", + "severity": "error" + }, + { + "line": 617, + "column": 20, + "stop_line": 617, + "stop_column": 40, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `searcher`", + "concise_description": "Object of class `NoneType` has no attribute `searcher`", + "severity": "error" + }, + { + "line": 621, + "column": 37, + "stop_line": 621, + "stop_column": 54, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "severity": "error" + }, + { + "line": 622, + "column": 50, + "stop_line": 622, + "stop_column": 62, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `documents.search._query.build_permission_filter`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `documents.search._query.build_permission_filter`", + "severity": "error" + }, + { + "line": 671, + "column": 20, + "stop_line": 671, + "stop_column": 40, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `searcher`", + "concise_description": "Object of class `NoneType` has no attribute `searcher`", + "severity": "error" + }, + { + "line": 675, + "column": 13, + "stop_line": 675, + "stop_column": 25, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.Query.range_query`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.Query.range_query`", + "severity": "error" + }, + { + "line": 704, + "column": 57, + "stop_line": 704, + "stop_column": 69, + "path": "src/documents/search/_backend.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `documents.search._query.build_permission_filter`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `documents.search._query.build_permission_filter`", + "severity": "error" + }, + { + "line": 132, + "column": 9, + "stop_line": 132, "stop_column": 17, "path": "src/documents/serialisers.py", "code": -2, @@ -1813,9 +1621,9 @@ "severity": "error" }, { - "line": 201, + "line": 206, "column": 62, - "stop_line": 203, + "stop_line": 208, "stop_column": 26, "path": "src/documents/serialisers.py", "code": -2, @@ -1825,9 +1633,9 @@ "severity": "error" }, { - "line": 290, + "line": 295, "column": 17, - "stop_line": 294, + "stop_line": 299, "stop_column": 30, "path": "src/documents/serialisers.py", "code": -2, @@ -1837,9 +1645,9 @@ "severity": "error" }, { - "line": 356, + "line": 361, "column": 21, - "stop_line": 356, + "stop_line": 361, "stop_column": 37, "path": "src/documents/serialisers.py", "code": -2, @@ -1849,9 +1657,9 @@ "severity": "error" }, { - "line": 468, + "line": 473, "column": 9, - "stop_line": 468, + "stop_line": 473, "stop_column": 26, "path": "src/documents/serialisers.py", "code": -2, @@ -1861,9 +1669,9 @@ "severity": "error" }, { - "line": 469, + "line": 474, "column": 9, - "stop_line": 469, + "stop_line": 474, "stop_column": 27, "path": "src/documents/serialisers.py", "code": -2, @@ -1873,9 +1681,9 @@ "severity": "error" }, { - "line": 469, + "line": 474, "column": 51, - "stop_line": 469, + "stop_line": 474, "stop_column": 83, "path": "src/documents/serialisers.py", "code": -2, @@ -1885,9 +1693,9 @@ "severity": "error" }, { - "line": 478, + "line": 483, "column": 11, - "stop_line": 478, + "stop_line": 483, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -1897,9 +1705,9 @@ "severity": "error" }, { - "line": 478, + "line": 483, "column": 11, - "stop_line": 478, + "stop_line": 483, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -1909,9 +1717,9 @@ "severity": "error" }, { - "line": 497, + "line": 502, "column": 11, - "stop_line": 497, + "stop_line": 502, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -1921,9 +1729,9 @@ "severity": "error" }, { - "line": 497, + "line": 502, "column": 11, - "stop_line": 497, + "stop_line": 502, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -1933,33 +1741,9 @@ "severity": "error" }, { - "line": 554, - "column": 11, - "stop_line": 554, - "stop_column": 15, - "path": "src/documents/serialisers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TagSerializerVersion1.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner\n `TagSerializerVersion1.Meta` has type `type[TagSerializerVersion1.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `MatchingModelSerializer.Meta`", - "concise_description": "Class member `TagSerializerVersion1.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner", - "severity": "error" - }, - { - "line": 554, - "column": 11, - "stop_line": 554, - "stop_column": 15, - "path": "src/documents/serialisers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TagSerializerVersion1.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `TagSerializerVersion1.Meta` has type `type[TagSerializerVersion1.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", - "concise_description": "Class member `TagSerializerVersion1.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", - "severity": "error" - }, - { - "line": 590, + "line": 573, "column": 14, - "stop_line": 595, + "stop_line": 578, "stop_column": 6, "path": "src/documents/serialisers.py", "code": -2, @@ -1969,9 +1753,9 @@ "severity": "error" }, { - "line": 644, + "line": 627, "column": 11, - "stop_line": 644, + "stop_line": 627, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -1981,9 +1765,9 @@ "severity": "error" }, { - "line": 644, + "line": 627, "column": 11, - "stop_line": 644, + "stop_line": 627, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -1993,9 +1777,9 @@ "severity": "error" }, { - "line": 671, + "line": 654, "column": 9, - "stop_line": 671, + "stop_line": 654, "stop_column": 17, "path": "src/documents/serialisers.py", "code": -2, @@ -2005,9 +1789,9 @@ "severity": "error" }, { - "line": 733, + "line": 707, "column": 17, - "stop_line": 733, + "stop_line": 707, "stop_column": 42, "path": "src/documents/serialisers.py", "code": -2, @@ -2017,9 +1801,9 @@ "severity": "error" }, { - "line": 739, + "line": 713, "column": 11, - "stop_line": 739, + "stop_line": 713, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2029,9 +1813,9 @@ "severity": "error" }, { - "line": 850, + "line": 792, "column": 28, - "stop_line": 850, + "stop_line": 792, "stop_column": 39, "path": "src/documents/serialisers.py", "code": -2, @@ -2041,9 +1825,9 @@ "severity": "error" }, { - "line": 869, + "line": 830, "column": 13, - "stop_line": 869, + "stop_line": 830, "stop_column": 35, "path": "src/documents/serialisers.py", "code": -2, @@ -2053,9 +1837,9 @@ "severity": "error" }, { - "line": 885, + "line": 846, "column": 9, - "stop_line": 885, + "stop_line": 846, "stop_column": 18, "path": "src/documents/serialisers.py", "code": -2, @@ -2065,9 +1849,9 @@ "severity": "error" }, { - "line": 888, + "line": 849, "column": 9, - "stop_line": 888, + "stop_line": 849, "stop_column": 17, "path": "src/documents/serialisers.py", "code": -2, @@ -2077,9 +1861,9 @@ "severity": "error" }, { - "line": 931, + "line": 892, "column": 34, - "stop_line": 931, + "stop_line": 892, "stop_column": 68, "path": "src/documents/serialisers.py", "code": -2, @@ -2089,21 +1873,9 @@ "severity": "error" }, { - "line": 949, - "column": 21, - "stop_line": 949, - "stop_column": 34, - "path": "src/documents/serialisers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `list[Unknown] | None` is not assignable to parameter `obj` with type `Sized` in function `len`\n Protocol `Sized` requires attribute `__len__`", - "concise_description": "Argument `list[Unknown] | None` is not assignable to parameter `obj` with type `Sized` in function `len`", - "severity": "error" - }, - { - "line": 1001, + "line": 917, "column": 11, - "stop_line": 1001, + "stop_line": 917, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2113,9 +1885,9 @@ "severity": "error" }, { - "line": 1011, + "line": 927, "column": 11, - "stop_line": 1011, + "stop_line": 927, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2125,9 +1897,9 @@ "severity": "error" }, { - "line": 1019, + "line": 935, "column": 11, - "stop_line": 1019, + "stop_line": 935, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2137,9 +1909,9 @@ "severity": "error" }, { - "line": 1130, + "line": 1093, "column": 30, - "stop_line": 1130, + "stop_line": 1093, "stop_column": 55, "path": "src/documents/serialisers.py", "code": -2, @@ -2149,9 +1921,9 @@ "severity": "error" }, { - "line": 1190, + "line": 1137, "column": 12, - "stop_line": 1190, + "stop_line": 1137, "stop_column": 34, "path": "src/documents/serialisers.py", "code": -2, @@ -2161,9 +1933,9 @@ "severity": "error" }, { - "line": 1194, + "line": 1141, "column": 42, - "stop_line": 1194, + "stop_line": 1141, "stop_column": 64, "path": "src/documents/serialisers.py", "code": -2, @@ -2174,20 +1946,8 @@ }, { "line": 1224, - "column": 35, - "stop_line": 1224, - "stop_column": 50, - "path": "src/documents/serialisers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `get_ancestors`", - "concise_description": "Object of class `NoneType` has no attribute `get_ancestors`", - "severity": "error" - }, - { - "line": 1277, "column": 11, - "stop_line": 1277, + "stop_line": 1224, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2197,9 +1957,9 @@ "severity": "error" }, { - "line": 1277, + "line": 1224, "column": 11, - "stop_line": 1277, + "stop_line": 1224, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2209,9 +1969,9 @@ "severity": "error" }, { - "line": 1277, + "line": 1224, "column": 11, - "stop_line": 1277, + "stop_line": 1224, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2221,9 +1981,9 @@ "severity": "error" }, { - "line": 1311, + "line": 1260, "column": 9, - "stop_line": 1311, + "stop_line": 1260, "stop_column": 26, "path": "src/documents/serialisers.py", "code": -2, @@ -2233,9 +1993,9 @@ "severity": "error" }, { - "line": 1314, + "line": 1263, "column": 21, - "stop_line": 1314, + "stop_line": 1263, "stop_column": 47, "path": "src/documents/serialisers.py", "code": -2, @@ -2245,9 +2005,9 @@ "severity": "error" }, { - "line": 1315, + "line": 1264, "column": 9, - "stop_line": 1315, + "stop_line": 1264, "stop_column": 27, "path": "src/documents/serialisers.py", "code": -2, @@ -2257,9 +2017,9 @@ "severity": "error" }, { - "line": 1317, + "line": 1266, "column": 9, - "stop_line": 1317, + "stop_line": 1266, "stop_column": 27, "path": "src/documents/serialisers.py", "code": -2, @@ -2269,9 +2029,9 @@ "severity": "error" }, { - "line": 1317, + "line": 1266, "column": 51, - "stop_line": 1317, + "stop_line": 1266, "stop_column": 83, "path": "src/documents/serialisers.py", "code": -2, @@ -2281,9 +2041,9 @@ "severity": "error" }, { - "line": 1342, + "line": 1291, "column": 9, - "stop_line": 1342, + "stop_line": 1291, "stop_column": 26, "path": "src/documents/serialisers.py", "code": -2, @@ -2293,21 +2053,9 @@ "severity": "error" }, { - "line": 1353, - "column": 35, - "stop_line": 1353, - "stop_column": 49, - "path": "src/documents/serialisers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Document` has no attribute `notes`", - "concise_description": "Object of class `Document` has no attribute `notes`", - "severity": "error" - }, - { - "line": 1368, + "line": 1313, "column": 9, - "stop_line": 1368, + "stop_line": 1313, "stop_column": 30, "path": "src/documents/serialisers.py", "code": -2, @@ -2317,9 +2065,9 @@ "severity": "error" }, { - "line": 1372, + "line": 1317, "column": 11, - "stop_line": 1372, + "stop_line": 1317, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2329,9 +2077,9 @@ "severity": "error" }, { - "line": 1380, + "line": 1325, "column": 11, - "stop_line": 1380, + "stop_line": 1325, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2341,9 +2089,9 @@ "severity": "error" }, { - "line": 1403, + "line": 1465, "column": 21, - "stop_line": 1403, + "stop_line": 1465, "stop_column": 62, "path": "src/documents/serialisers.py", "code": -2, @@ -2353,9 +2101,9 @@ "severity": "error" }, { - "line": 1405, + "line": 1467, "column": 36, - "stop_line": 1405, + "stop_line": 1467, "stop_column": 63, "path": "src/documents/serialisers.py", "code": -2, @@ -2365,9 +2113,9 @@ "severity": "error" }, { - "line": 2059, + "line": 2349, "column": 73, - "stop_line": 2059, + "stop_line": 2349, "stop_column": 80, "path": "src/documents/serialisers.py", "code": -2, @@ -2377,9 +2125,9 @@ "severity": "error" }, { - "line": 2072, + "line": 2362, "column": 11, - "stop_line": 2072, + "stop_line": 2362, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2389,9 +2137,9 @@ "severity": "error" }, { - "line": 2072, + "line": 2362, "column": 11, - "stop_line": 2072, + "stop_line": 2362, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2401,9 +2149,9 @@ "severity": "error" }, { - "line": 2117, + "line": 2407, "column": 11, - "stop_line": 2117, + "stop_line": 2407, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2413,9 +2161,21 @@ "severity": "error" }, { - "line": 2143, + "line": 2424, + "column": 9, + "stop_line": 2424, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `UiSettingsViewSerializer.create` overrides parent class `ModelSerializer` in an inconsistent manner\n `UiSettingsViewSerializer.create` has type `(self: UiSettingsViewSerializer, validated_data: Unknown) -> tuple[UiSettings, bool]`, which is not assignable to `(self: UiSettingsViewSerializer, validated_data: Any) -> UiSettings`, the type of `ModelSerializer.create`\n Signature mismatch:\n expected: def create(self: UiSettingsViewSerializer, validated_data: Any) -> UiSettings: ...\n ^^^ ^^^^^^^^^^ return type\n |\n parameters\n found: def create(self: UiSettingsViewSerializer, validated_data: Unknown) -> tuple[UiSettings, bool]: ...\n ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ return type\n |\n parameters", + "concise_description": "Class member `UiSettingsViewSerializer.create` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2433, "column": 11, - "stop_line": 2143, + "stop_line": 2433, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2425,9 +2185,9 @@ "severity": "error" }, { - "line": 2181, + "line": 2471, "column": 30, - "stop_line": 2181, + "stop_line": 2471, "stop_column": 57, "path": "src/documents/serialisers.py", "code": -2, @@ -2437,9 +2197,9 @@ "severity": "error" }, { - "line": 2232, + "line": 2522, "column": 11, - "stop_line": 2232, + "stop_line": 2522, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2449,9 +2209,9 @@ "severity": "error" }, { - "line": 2266, + "line": 2567, "column": 11, - "stop_line": 2266, + "stop_line": 2567, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2461,21 +2221,9 @@ "severity": "error" }, { - "line": 2413, - "column": 17, - "stop_line": 2413, - "stop_column": 37, - "path": "src/documents/serialisers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `objects`", - "concise_description": "Object of class `NoneType` has no attribute `objects`", - "severity": "error" - }, - { - "line": 2457, + "line": 2780, "column": 11, - "stop_line": 2457, + "stop_line": 2780, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2485,9 +2233,9 @@ "severity": "error" }, { - "line": 2553, + "line": 2876, "column": 11, - "stop_line": 2553, + "stop_line": 2876, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2497,9 +2245,9 @@ "severity": "error" }, { - "line": 2571, + "line": 2896, "column": 11, - "stop_line": 2571, + "stop_line": 2896, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2509,9 +2257,9 @@ "severity": "error" }, { - "line": 2594, + "line": 2919, "column": 11, - "stop_line": 2594, + "stop_line": 2919, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2521,9 +2269,9 @@ "severity": "error" }, { - "line": 2713, + "line": 3038, "column": 11, - "stop_line": 2713, + "stop_line": 3038, "stop_column": 15, "path": "src/documents/serialisers.py", "code": -2, @@ -2533,9 +2281,9 @@ "severity": "error" }, { - "line": 2895, + "line": 3220, "column": 16, - "stop_line": 2895, + "stop_line": 3220, "stop_column": 33, "path": "src/documents/serialisers.py", "code": -2, @@ -2545,9 +2293,9 @@ "severity": "error" }, { - "line": 2899, + "line": 3224, "column": 16, - "stop_line": 2899, + "stop_line": 3224, "stop_column": 32, "path": "src/documents/serialisers.py", "code": -2, @@ -2557,9 +2305,9 @@ "severity": "error" }, { - "line": 2914, + "line": 3239, "column": 52, - "stop_line": 2914, + "stop_line": 3239, "stop_column": 60, "path": "src/documents/serialisers.py", "code": -2, @@ -2569,9 +2317,9 @@ "severity": "error" }, { - "line": 2914, + "line": 3239, "column": 62, - "stop_line": 2914, + "stop_line": 3239, "stop_column": 69, "path": "src/documents/serialisers.py", "code": -2, @@ -2581,9 +2329,9 @@ "severity": "error" }, { - "line": 118, + "line": 122, "column": 72, - "stop_line": 118, + "stop_line": 122, "stop_column": 82, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2593,22 +2341,10 @@ "severity": "error" }, { - "line": 144, - "column": 17, - "stop_line": 144, - "stop_column": 25, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", - "severity": "error" - }, - { - "line": 174, - "column": 71, - "stop_line": 174, - "stop_column": 81, + "line": 183, + "column": 72, + "stop_line": 183, + "stop_column": 82, "path": "src/documents/signals/handlers.py", "code": -2, "name": "bad-argument-type", @@ -2617,21 +2353,9 @@ "severity": "error" }, { - "line": 201, - "column": 17, - "stop_line": 201, - "stop_column": 25, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", - "severity": "error" - }, - { - "line": 236, + "line": 265, "column": 50, - "stop_line": 236, + "stop_line": 265, "stop_column": 60, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2641,94 +2365,10 @@ "severity": "error" }, { - "line": 247, - "column": 19, - "stop_line": 247, - "stop_column": 37, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `SUCCESS`", - "concise_description": "Object of class `NoneType` has no attribute `SUCCESS`", - "severity": "error" - }, - { - "line": 249, - "column": 13, - "stop_line": 249, - "stop_column": 25, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `write`", - "concise_description": "Object of class `NoneType` has no attribute `write`", - "severity": "error" - }, - { - "line": 250, - "column": 13, - "stop_line": 250, - "stop_column": 25, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `write`", - "concise_description": "Object of class `NoneType` has no attribute `write`", - "severity": "error" - }, - { - "line": 252, - "column": 13, - "stop_line": 252, - "stop_column": 25, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `write`", - "concise_description": "Object of class `NoneType` has no attribute `write`", - "severity": "error" - }, - { - "line": 252, - "column": 36, - "stop_line": 252, - "stop_column": 54, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `SUCCESS`", - "concise_description": "Object of class `NoneType` has no attribute `SUCCESS`", - "severity": "error" - }, - { - "line": 254, - "column": 13, - "stop_line": 254, - "stop_column": 25, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `write`", - "concise_description": "Object of class `NoneType` has no attribute `write`", - "severity": "error" - }, - { - "line": 256, - "column": 13, - "stop_line": 256, - "stop_column": 25, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `write`", - "concise_description": "Object of class `NoneType` has no attribute `write`", - "severity": "error" - }, - { - "line": 289, - "column": 9, - "stop_line": 289, - "stop_column": 19, + "line": 309, + "column": 70, + "stop_line": 309, + "stop_column": 80, "path": "src/documents/signals/handlers.py", "code": -2, "name": "bad-argument-type", @@ -2737,57 +2377,9 @@ "severity": "error" }, { - "line": 317, - "column": 17, - "stop_line": 317, - "stop_column": 25, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", - "severity": "error" - }, - { - "line": 365, - "column": 16, - "stop_line": 365, - "stop_column": 24, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "unbound-name", - "description": "`settings` may be uninitialized", - "concise_description": "`settings` may be uninitialized", - "severity": "error" - }, - { - "line": 384, - "column": 18, - "stop_line": 384, - "stop_column": 26, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "unbound-name", - "description": "`settings` may be uninitialized", - "concise_description": "`settings` may be uninitialized", - "severity": "error" - }, - { - "line": 390, - "column": 22, - "stop_line": 390, - "stop_column": 30, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "unbound-name", - "description": "`settings` may be uninitialized", - "concise_description": "`settings` may be uninitialized", - "severity": "error" - }, - { - "line": 495, + "line": 542, "column": 46, - "stop_line": 495, + "stop_line": 542, "stop_column": 66, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2797,9 +2389,9 @@ "severity": "error" }, { - "line": 496, + "line": 543, "column": 49, - "stop_line": 496, + "stop_line": 543, "stop_column": 69, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2809,9 +2401,45 @@ "severity": "error" }, { - "line": 534, + "line": 548, + "column": 28, + "stop_line": 548, + "stop_column": 52, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `is_file`", + "concise_description": "Object of class `NoneType` has no attribute `is_file`", + "severity": "error" + }, + { + "line": 574, + "column": 43, + "stop_line": 574, + "stop_column": 60, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "`str` is not assignable to TypedDict key `filename` with type `datetime`", + "concise_description": "`str` is not assignable to TypedDict key `filename` with type `datetime`", + "severity": "error" + }, + { + "line": 576, + "column": 51, + "stop_line": 576, + "stop_column": 76, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "`Any | None` is not assignable to TypedDict key `archive_filename` with type `datetime`", + "concise_description": "`Any | None` is not assignable to TypedDict key `archive_filename` with type `datetime`", + "severity": "error" + }, + { + "line": 595, "column": 21, - "stop_line": 534, + "stop_line": 595, "stop_column": 37, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2821,9 +2449,9 @@ "severity": "error" }, { - "line": 535, + "line": 596, "column": 21, - "stop_line": 535, + "stop_line": 596, "stop_column": 42, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2833,9 +2461,9 @@ "severity": "error" }, { - "line": 538, + "line": 599, "column": 46, - "stop_line": 538, + "stop_line": 599, "stop_column": 67, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2845,9 +2473,9 @@ "severity": "error" }, { - "line": 539, + "line": 600, "column": 28, - "stop_line": 539, + "stop_line": 600, "stop_column": 69, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2857,9 +2485,9 @@ "severity": "error" }, { - "line": 539, + "line": 600, "column": 29, - "stop_line": 539, + "stop_line": 600, "stop_column": 45, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2869,9 +2497,9 @@ "severity": "error" }, { - "line": 559, + "line": 620, "column": 20, - "stop_line": 559, + "stop_line": 620, "stop_column": 33, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2881,9 +2509,9 @@ "severity": "error" }, { - "line": 561, + "line": 622, "column": 55, - "stop_line": 561, + "stop_line": 622, "stop_column": 70, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2893,9 +2521,9 @@ "severity": "error" }, { - "line": 563, + "line": 624, "column": 20, - "stop_line": 563, + "stop_line": 624, "stop_column": 32, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2905,9 +2533,9 @@ "severity": "error" }, { - "line": 563, + "line": 624, "column": 37, - "stop_line": 563, + "stop_line": 624, "stop_column": 66, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2917,9 +2545,9 @@ "severity": "error" }, { - "line": 565, + "line": 626, "column": 32, - "stop_line": 565, + "stop_line": 626, "stop_column": 73, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2929,9 +2557,9 @@ "severity": "error" }, { - "line": 565, + "line": 626, "column": 33, - "stop_line": 565, + "stop_line": 626, "stop_column": 54, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2941,9 +2569,9 @@ "severity": "error" }, { - "line": 565, + "line": 626, "column": 56, - "stop_line": 565, + "stop_line": 626, "stop_column": 72, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2953,9 +2581,9 @@ "severity": "error" }, { - "line": 579, + "line": 640, "column": 33, - "stop_line": 579, + "stop_line": 640, "stop_column": 45, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2965,9 +2593,9 @@ "severity": "error" }, { - "line": 580, + "line": 641, "column": 41, - "stop_line": 580, + "stop_line": 641, "stop_column": 61, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2977,9 +2605,9 @@ "severity": "error" }, { - "line": 590, + "line": 651, "column": 49, - "stop_line": 590, + "stop_line": 651, "stop_column": 73, "path": "src/documents/signals/handlers.py", "code": -2, @@ -2989,9 +2617,9 @@ "severity": "error" }, { - "line": 592, + "line": 653, "column": 22, - "stop_line": 592, + "stop_line": 653, "stop_column": 38, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3001,9 +2629,9 @@ "severity": "error" }, { - "line": 609, + "line": 680, "column": 23, - "stop_line": 609, + "stop_line": 680, "stop_column": 50, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3013,9 +2641,9 @@ "severity": "error" }, { - "line": 613, + "line": 684, "column": 5, - "stop_line": 613, + "stop_line": 684, "stop_column": 24, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3025,9 +2653,9 @@ "severity": "error" }, { - "line": 617, + "line": 688, "column": 24, - "stop_line": 617, + "stop_line": 688, "stop_column": 43, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3037,9 +2665,9 @@ "severity": "error" }, { - "line": 634, + "line": 705, "column": 13, - "stop_line": 634, + "stop_line": 705, "stop_column": 28, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3049,9 +2677,9 @@ "severity": "error" }, { - "line": 648, + "line": 719, "column": 12, - "stop_line": 648, + "stop_line": 719, "stop_column": 51, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3061,9 +2689,9 @@ "severity": "error" }, { - "line": 652, + "line": 723, "column": 13, - "stop_line": 652, + "stop_line": 723, "stop_column": 39, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3073,9 +2701,9 @@ "severity": "error" }, { - "line": 691, + "line": 762, "column": 27, - "stop_line": 691, + "stop_line": 762, "stop_column": 51, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3085,9 +2713,9 @@ "severity": "error" }, { - "line": 711, + "line": 782, "column": 17, - "stop_line": 711, + "stop_line": 782, "stop_column": 52, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3097,9 +2725,9 @@ "severity": "error" }, { - "line": 778, + "line": 882, "column": 13, - "stop_line": 778, + "stop_line": 882, "stop_column": 33, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3109,9 +2737,9 @@ "severity": "error" }, { - "line": 778, + "line": 882, "column": 60, - "stop_line": 778, + "stop_line": 882, "stop_column": 82, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3121,33 +2749,9 @@ "severity": "error" }, { - "line": 789, - "column": 13, - "stop_line": 789, - "stop_column": 37, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `ConsumableDocument` has no attribute `refresh_from_db`", - "concise_description": "Object of class `ConsumableDocument` has no attribute `refresh_from_db`", - "severity": "error" - }, - { - "line": 790, - "column": 32, - "stop_line": 790, - "stop_column": 45, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `ConsumableDocument` has no attribute `tags`", - "concise_description": "Object of class `ConsumableDocument` has no attribute `tags`", - "severity": "error" - }, - { - "line": 807, + "line": 930, "column": 29, - "stop_line": 807, + "stop_line": 930, "stop_column": 37, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3157,9 +2761,9 @@ "severity": "error" }, { - "line": 808, + "line": 931, "column": 29, - "stop_line": 808, + "stop_line": 931, "stop_column": 40, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3169,9 +2773,9 @@ "severity": "error" }, { - "line": 815, + "line": 938, "column": 59, - "stop_line": 815, + "stop_line": 938, "stop_column": 67, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3181,9 +2785,9 @@ "severity": "error" }, { - "line": 815, + "line": 938, "column": 69, - "stop_line": 815, + "stop_line": 938, "stop_column": 80, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3193,9 +2797,9 @@ "severity": "error" }, { - "line": 840, + "line": 965, "column": 17, - "stop_line": 840, + "stop_line": 965, "stop_column": 31, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3205,9 +2809,9 @@ "severity": "error" }, { - "line": 840, + "line": 965, "column": 34, - "stop_line": 840, + "stop_line": 965, "stop_column": 48, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3217,9 +2821,9 @@ "severity": "error" }, { - "line": 842, + "line": 975, "column": 17, - "stop_line": 842, + "stop_line": 975, "stop_column": 30, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3229,9 +2833,9 @@ "severity": "error" }, { - "line": 843, + "line": 985, "column": 17, - "stop_line": 843, + "stop_line": 985, "stop_column": 30, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3241,9 +2845,9 @@ "severity": "error" }, { - "line": 843, + "line": 985, "column": 35, - "stop_line": 843, + "stop_line": 985, "stop_column": 46, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3253,9 +2857,9 @@ "severity": "error" }, { - "line": 866, + "line": 1013, "column": 8, - "stop_line": 866, + "stop_line": 1013, "stop_column": 29, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3265,9 +2869,9 @@ "severity": "error" }, { - "line": 866, + "line": 1013, "column": 33, - "stop_line": 866, + "stop_line": 1013, "stop_column": 48, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3277,9 +2881,9 @@ "severity": "error" }, { - "line": 873, + "line": 1020, "column": 21, - "stop_line": 873, + "stop_line": 1020, "stop_column": 28, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3289,9 +2893,9 @@ "severity": "error" }, { - "line": 881, + "line": 1028, "column": 21, - "stop_line": 881, + "stop_line": 1028, "stop_column": 34, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3301,21 +2905,9 @@ "severity": "error" }, { - "line": 939, - "column": 36, - "stop_line": 939, - "stop_column": 41, - "path": "src/documents/signals/handlers.py", - "code": -2, - "name": "bad-assignment", - "description": "`Unknown | None` is not assignable to attribute `status` with type `str`", - "concise_description": "`Unknown | None` is not assignable to attribute `status` with type `str`", - "severity": "error" - }, - { - "line": 988, + "line": 1135, "column": 13, - "stop_line": 988, + "stop_line": 1135, "stop_column": 28, "path": "src/documents/signals/handlers.py", "code": -2, @@ -3325,10 +2917,10 @@ "severity": "error" }, { - "line": 185, - "column": 17, - "stop_line": 185, - "stop_column": 32, + "line": 191, + "column": 21, + "stop_line": 191, + "stop_column": 36, "path": "src/documents/tasks.py", "code": -2, "name": "bad-argument-type", @@ -3337,10 +2929,10 @@ "severity": "error" }, { - "line": 217, - "column": 12, - "stop_line": 217, - "stop_column": 15, + "line": 228, + "column": 16, + "stop_line": 228, + "stop_column": 19, "path": "src/documents/tasks.py", "code": -2, "name": "unbound-name", @@ -3349,34 +2941,22 @@ "severity": "error" }, { - "line": 276, - "column": 42, - "stop_line": 276, - "stop_column": 83, - "path": "src/documents/tasks.py", - "code": -2, - "name": "bad-assignment", - "description": "`type[DocumentParser] | None` is not assignable to `type[DocumentParser]`", - "concise_description": "`type[DocumentParser] | None` is not assignable to `type[DocumentParser]`", - "severity": "error" - }, - { - "line": 299, - "column": 27, - "stop_line": 299, - "stop_column": 52, + "line": 331, + "column": 49, + "stop_line": 331, + "stop_column": 74, "path": "src/documents/tasks.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `Path` in function `documents.utils.compute_checksum`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `Path` in function `documents.utils.compute_checksum`", "severity": "error" }, { - "line": 316, - "column": 21, - "stop_line": 316, - "stop_column": 48, + "line": 347, + "column": 25, + "stop_line": 347, + "stop_column": 52, "path": "src/documents/tasks.py", "code": -2, "name": "missing-attribute", @@ -3385,10 +2965,10 @@ "severity": "error" }, { - "line": 340, - "column": 21, - "stop_line": 340, - "stop_column": 48, + "line": 371, + "column": 25, + "stop_line": 371, + "stop_column": 52, "path": "src/documents/tasks.py", "code": -2, "name": "missing-attribute", @@ -3397,10 +2977,10 @@ "severity": "error" }, { - "line": 353, - "column": 50, - "stop_line": 353, - "stop_column": 71, + "line": 384, + "column": 54, + "stop_line": 384, + "stop_column": 75, "path": "src/documents/tasks.py", "code": -2, "name": "bad-argument-type", @@ -3409,10 +2989,10 @@ "severity": "error" }, { - "line": 354, - "column": 32, - "stop_line": 354, - "stop_column": 82, + "line": 385, + "column": 36, + "stop_line": 385, + "stop_column": 86, "path": "src/documents/tasks.py", "code": -2, "name": "bad-specialization", @@ -3421,21 +3001,21 @@ "severity": "error" }, { - "line": 354, - "column": 33, - "stop_line": 354, - "stop_column": 58, + "line": 385, + "column": 37, + "stop_line": 385, + "stop_column": 62, "path": "src/documents/tasks.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", + "description": "Argument `Path | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", + "concise_description": "Argument `Path | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", "severity": "error" }, { - "line": 520, + "line": 562, "column": 33, - "stop_line": 520, + "stop_line": 562, "stop_column": 61, "path": "src/documents/tasks.py", "code": -2, @@ -3445,45 +3025,9 @@ "severity": "error" }, { - "line": 84, - "column": 49, - "stop_line": 84, - "stop_column": 61, - "path": "src/documents/templating/filepath.py", - "code": -2, - "name": "unsupported-operation", - "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(custom_field_data: dict[str, dict[str, str]], name: str, default: str | None = None) -> str | None` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", - "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", - "severity": "error" - }, - { - "line": 86, - "column": 45, - "stop_line": 86, - "stop_column": 60, - "path": "src/documents/templating/filepath.py", - "code": -2, - "name": "unsupported-operation", - "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(value: datetime | str, format: str) -> str` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", - "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", - "severity": "error" - }, - { - "line": 90, - "column": 50, - "stop_line": 90, - "stop_column": 63, - "path": "src/documents/templating/filepath.py", - "code": -2, - "name": "unsupported-operation", - "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(value: date | datetime | str, format: str, locale: str) -> str` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", - "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", - "severity": "error" - }, - { - "line": 239, + "line": 309, "column": 17, - "stop_line": 239, + "stop_line": 309, "stop_column": 66, "path": "src/documents/templating/filepath.py", "code": -2, @@ -3493,27 +3037,15 @@ "severity": "error" }, { - "line": 241, - "column": 23, - "stop_line": 241, - "stop_column": 72, - "path": "src/documents/templating/filepath.py", - "code": -2, - "name": "unsupported-operation", - "description": "`None` is not subscriptable", - "concise_description": "`None` is not subscriptable", - "severity": "error" - }, - { - "line": 261, + "line": 331, "column": 12, - "stop_line": 261, + "stop_line": 331, "stop_column": 22, "path": "src/documents/templating/filepath.py", "code": -2, "name": "bad-return", - "description": "Returned type `dict[str, dict[str, dict[str, str | Unknown | None]]]` is not assignable to declared return type `dict[str, dict[str, dict[str, str]]]`", - "concise_description": "Returned type `dict[str, dict[str, dict[str, str | Unknown | None]]]` is not assignable to declared return type `dict[str, dict[str, dict[str, str]]]`", + "description": "Returned type `dict[str, dict[str, dict[str, str | Any | None]]]` is not assignable to declared return type `dict[str, dict[str, dict[str, str]]]`", + "concise_description": "Returned type `dict[str, dict[str, dict[str, str | Any | None]]]` is not assignable to declared return type `dict[str, dict[str, dict[str, str]]]`", "severity": "error" }, { @@ -3552,30 +3084,6 @@ "concise_description": "Object of class `str` has no attribute `strftime`", "severity": "error" }, - { - "line": 25, - "column": 45, - "stop_line": 25, - "stop_column": 60, - "path": "src/documents/templating/workflows.py", - "code": -2, - "name": "unsupported-operation", - "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(value: datetime | str, format: str) -> str` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", - "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", - "severity": "error" - }, - { - "line": 29, - "column": 50, - "stop_line": 29, - "stop_column": 63, - "path": "src/documents/templating/workflows.py", - "code": -2, - "name": "unsupported-operation", - "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(value: date | datetime | str, format: str, locale: str) -> str` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", - "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", - "severity": "error" - }, { "line": 109, "column": 12, @@ -3589,9 +3097,9 @@ "severity": "error" }, { - "line": 28, + "line": 135, "column": 12, - "stop_line": 28, + "stop_line": 135, "stop_column": 41, "path": "src/documents/tests/conftest.py", "code": -2, @@ -3601,9 +3109,9 @@ "severity": "error" }, { - "line": 9, + "line": 19, "column": 11, - "stop_line": 9, + "stop_line": 19, "stop_column": 15, "path": "src/documents/tests/factories.py", "code": -2, @@ -3613,9 +3121,45 @@ "severity": "error" }, { - "line": 16, + "line": 28, "column": 11, - "stop_line": 16, + "stop_line": 28, + "stop_column": 15, + "path": "src/documents/tests/factories.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DocumentTypeFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner\n `DocumentTypeFactory.Meta` has type `type[DocumentTypeFactory.Meta]`, which is not assignable to `type[DjangoModelFactory.Meta]`, the type of `DjangoModelFactory.Meta`", + "concise_description": "Class member `DocumentTypeFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner", + "severity": "error" + }, + { + "line": 37, + "column": 11, + "stop_line": 37, + "stop_column": 15, + "path": "src/documents/tests/factories.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TagFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner\n `TagFactory.Meta` has type `type[TagFactory.Meta]`, which is not assignable to `type[DjangoModelFactory.Meta]`, the type of `DjangoModelFactory.Meta`", + "concise_description": "Class member `TagFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner", + "severity": "error" + }, + { + "line": 47, + "column": 11, + "stop_line": 47, + "stop_column": 15, + "path": "src/documents/tests/factories.py", + "code": -2, + "name": "bad-override", + "description": "Class member `StoragePathFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner\n `StoragePathFactory.Meta` has type `type[StoragePathFactory.Meta]`, which is not assignable to `type[DjangoModelFactory.Meta]`, the type of `DjangoModelFactory.Meta`", + "concise_description": "Class member `StoragePathFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner", + "severity": "error" + }, + { + "line": 59, + "column": 11, + "stop_line": 59, "stop_column": 15, "path": "src/documents/tests/factories.py", "code": -2, @@ -3625,9 +3169,297 @@ "severity": "error" }, { - "line": 36, + "line": 97, + "column": 22, + "stop_line": 97, + "stop_column": 35, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 98, + "column": 22, + "stop_line": 98, + "stop_column": 35, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 109, + "column": 22, + "stop_line": 109, + "stop_column": 35, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 110, + "column": 22, + "stop_line": 110, + "stop_column": 35, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 236, "column": 26, - "stop_line": 36, + "stop_line": 236, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 237, + "column": 26, + "stop_line": 237, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 246, + "column": 26, + "stop_line": 246, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 247, + "column": 26, + "stop_line": 247, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 267, + "column": 26, + "stop_line": 267, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 268, + "column": 26, + "stop_line": 268, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 288, + "column": 26, + "stop_line": 288, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 289, + "column": 26, + "stop_line": 289, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 298, + "column": 26, + "stop_line": 298, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stdout` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 299, + "column": 26, + "stop_line": 299, + "stop_column": 39, + "path": "src/documents/tests/management/test_management_base_cmd.py", + "code": -2, + "name": "bad-assignment", + "description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "concise_description": "`StringIO` is not assignable to attribute `stderr` with type `OutputWrapper`", + "severity": "error" + }, + { + "line": 485, + "column": 16, + "stop_line": 485, + "stop_column": 66, + "path": "src/documents/tests/search/test_query.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SearchResult` has no attribute `count`", + "concise_description": "Object of class `SearchResult` has no attribute `count`", + "severity": "error" + }, + { + "line": 496, + "column": 16, + "stop_line": 496, + "stop_column": 66, + "path": "src/documents/tests/search/test_query.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SearchResult` has no attribute `count`", + "concise_description": "Object of class `SearchResult` has no attribute `count`", + "severity": "error" + }, + { + "line": 507, + "column": 16, + "stop_line": 507, + "stop_column": 66, + "path": "src/documents/tests/search/test_query.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SearchResult` has no attribute `count`", + "concise_description": "Object of class `SearchResult` has no attribute `count`", + "severity": "error" + }, + { + "line": 518, + "column": 16, + "stop_line": 518, + "stop_column": 66, + "path": "src/documents/tests/search/test_query.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SearchResult` has no attribute `count`", + "concise_description": "Object of class `SearchResult` has no attribute `count`", + "severity": "error" + }, + { + "line": 530, + "column": 16, + "stop_line": 530, + "stop_column": 66, + "path": "src/documents/tests/search/test_query.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SearchResult` has no attribute `count`", + "concise_description": "Object of class `SearchResult` has no attribute `count`", + "severity": "error" + }, + { + "line": 71, + "column": 16, + "stop_line": 71, + "stop_column": 65, + "path": "src/documents/tests/search/test_tokenizer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SearchResult` has no attribute `count`", + "concise_description": "Object of class `SearchResult` has no attribute `count`", + "severity": "error" + }, + { + "line": 82, + "column": 16, + "stop_line": 82, + "stop_column": 64, + "path": "src/documents/tests/search/test_tokenizer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SearchResult` has no attribute `count`", + "concise_description": "Object of class `SearchResult` has no attribute `count`", + "severity": "error" + }, + { + "line": 100, + "column": 16, + "stop_line": 100, + "stop_column": 71, + "path": "src/documents/tests/search/test_tokenizer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SearchResult` has no attribute `count`", + "concise_description": "Object of class `SearchResult` has no attribute `count`", + "severity": "error" + }, + { + "line": 25, + "column": 20, + "stop_line": 25, + "stop_column": 43, + "path": "src/documents/tests/test_admin.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `searcher`", + "concise_description": "Object of class `NoneType` has no attribute `searcher`", + "severity": "error" + }, + { + "line": 28, + "column": 17, + "stop_line": 28, + "stop_column": 32, + "path": "src/documents/tests/test_admin.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.Query.range_query`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `schema` with type `Schema` in function `tantivy.tantivy.Query.range_query`", + "severity": "error" + }, + { + "line": 55, + "column": 26, + "stop_line": 55, "stop_column": 65, "path": "src/documents/tests/test_admin.py", "code": -2, @@ -3637,9 +3469,9 @@ "severity": "error" }, { - "line": 107, + "line": 126, "column": 26, - "stop_line": 107, + "stop_line": 126, "stop_column": 38, "path": "src/documents/tests/test_admin.py", "code": -2, @@ -3649,9 +3481,9 @@ "severity": "error" }, { - "line": 119, + "line": 138, "column": 9, - "stop_line": 119, + "stop_line": 138, "stop_column": 21, "path": "src/documents/tests/test_admin.py", "code": -2, @@ -3661,9 +3493,9 @@ "severity": "error" }, { - "line": 127, + "line": 146, "column": 9, - "stop_line": 127, + "stop_line": 146, "stop_column": 21, "path": "src/documents/tests/test_admin.py", "code": -2, @@ -3673,9 +3505,9 @@ "severity": "error" }, { - "line": 91, + "line": 94, "column": 9, - "stop_line": 91, + "stop_line": 94, "stop_column": 25, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3685,9 +3517,9 @@ "severity": "error" }, { - "line": 92, + "line": 95, "column": 9, - "stop_line": 92, + "stop_line": 95, "stop_column": 24, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3697,9 +3529,9 @@ "severity": "error" }, { - "line": 93, + "line": 96, "column": 9, - "stop_line": 93, + "stop_line": 96, "stop_column": 20, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3709,9 +3541,9 @@ "severity": "error" }, { - "line": 98, + "line": 101, "column": 30, - "stop_line": 98, + "stop_line": 101, "stop_column": 46, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3721,9 +3553,9 @@ "severity": "error" }, { - "line": 99, + "line": 102, "column": 29, - "stop_line": 99, + "stop_line": 102, "stop_column": 44, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3733,9 +3565,9 @@ "severity": "error" }, { - "line": 125, + "line": 128, "column": 26, - "stop_line": 125, + "stop_line": 128, "stop_column": 58, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3745,9 +3577,9 @@ "severity": "error" }, { - "line": 150, + "line": 153, "column": 26, - "stop_line": 150, + "stop_line": 153, "stop_column": 42, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3757,9 +3589,9 @@ "severity": "error" }, { - "line": 151, + "line": 154, "column": 26, - "stop_line": 151, + "stop_line": 154, "stop_column": 41, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3769,9 +3601,9 @@ "severity": "error" }, { - "line": 152, + "line": 155, "column": 26, - "stop_line": 152, + "stop_line": 155, "stop_column": 52, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3781,9 +3613,9 @@ "severity": "error" }, { - "line": 187, + "line": 190, "column": 20, - "stop_line": 187, + "stop_line": 190, "stop_column": 35, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3793,9 +3625,45 @@ "severity": "error" }, { - "line": 636, + "line": 236, + "column": 25, + "stop_line": 236, + "stop_column": 40, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_logo`", + "concise_description": "Object of class `NoneType` has no attribute `app_logo`", + "severity": "error" + }, + { + "line": 271, + "column": 25, + "stop_line": 271, + "stop_column": 40, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_logo`", + "concise_description": "Object of class `NoneType` has no attribute `app_logo`", + "severity": "error" + }, + { + "line": 272, + "column": 27, + "stop_line": 272, + "stop_column": 43, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ImageFile` has no attribute `text`", + "concise_description": "Object of class `ImageFile` has no attribute `text`", + "severity": "error" + }, + { + "line": 789, "column": 9, - "stop_line": 636, + "stop_line": 789, "stop_column": 27, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3805,9 +3673,9 @@ "severity": "error" }, { - "line": 637, + "line": 790, "column": 9, - "stop_line": 637, + "stop_line": 790, "stop_column": 20, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3817,9 +3685,9 @@ "severity": "error" }, { - "line": 650, + "line": 803, "column": 9, - "stop_line": 650, + "stop_line": 803, "stop_column": 31, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3829,9 +3697,9 @@ "severity": "error" }, { - "line": 651, + "line": 804, "column": 26, - "stop_line": 651, + "stop_line": 804, "stop_column": 44, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3841,9 +3709,9 @@ "severity": "error" }, { - "line": 663, + "line": 816, "column": 9, - "stop_line": 663, + "stop_line": 816, "stop_column": 31, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3853,9 +3721,9 @@ "severity": "error" }, { - "line": 676, + "line": 829, "column": 9, - "stop_line": 676, + "stop_line": 829, "stop_column": 26, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3865,9 +3733,9 @@ "severity": "error" }, { - "line": 677, + "line": 830, "column": 9, - "stop_line": 677, + "stop_line": 830, "stop_column": 37, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3877,9 +3745,9 @@ "severity": "error" }, { - "line": 678, + "line": 831, "column": 9, - "stop_line": 678, + "stop_line": 831, "stop_column": 20, "path": "src/documents/tests/test_api_app_config.py", "code": -2, @@ -3901,9 +3769,9 @@ "severity": "error" }, { - "line": 278, + "line": 279, "column": 26, - "stop_line": 278, + "stop_line": 279, "stop_column": 43, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -3913,21 +3781,33 @@ "severity": "error" }, { - "line": 358, - "column": 13, - "stop_line": 358, + "line": 529, + "column": 30, + "stop_line": 529, "stop_column": 47, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, - "name": "unsupported-operation", - "description": "`None` is not subscriptable", - "concise_description": "`None` is not subscriptable", + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", "severity": "error" }, { - "line": 422, + "line": 570, "column": 26, - "stop_line": 422, + "stop_line": 570, + "stop_column": 43, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 587, + "column": 26, + "stop_line": 587, "stop_column": 43, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -3949,33 +3829,9 @@ "severity": "error" }, { - "line": 676, - "column": 26, - "stop_line": 676, - "stop_column": 43, - "path": "src/documents/tests/test_api_custom_fields.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Document` has no attribute `custom_fields`", - "concise_description": "Object of class `Document` has no attribute `custom_fields`", - "severity": "error" - }, - { - "line": 693, - "column": 26, - "stop_line": 693, - "stop_column": 43, - "path": "src/documents/tests/test_api_custom_fields.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Document` has no attribute `custom_fields`", - "concise_description": "Object of class `Document` has no attribute `custom_fields`", - "severity": "error" - }, - { - "line": 741, + "line": 652, "column": 30, - "stop_line": 741, + "stop_line": 652, "stop_column": 47, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -3985,21 +3841,9 @@ "severity": "error" }, { - "line": 758, - "column": 30, - "stop_line": 758, - "stop_column": 47, - "path": "src/documents/tests/test_api_custom_fields.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Document` has no attribute `custom_fields`", - "concise_description": "Object of class `Document` has no attribute `custom_fields`", - "severity": "error" - }, - { - "line": 759, + "line": 653, "column": 26, - "stop_line": 759, + "stop_line": 653, "stop_column": 43, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4009,9 +3853,9 @@ "severity": "error" }, { - "line": 800, + "line": 694, "column": 30, - "stop_line": 800, + "stop_line": 694, "stop_column": 47, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4021,9 +3865,9 @@ "severity": "error" }, { - "line": 840, + "line": 734, "column": 38, - "stop_line": 840, + "stop_line": 734, "stop_column": 55, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4032,6 +3876,30 @@ "concise_description": "Object of class `Document` has no attribute `custom_fields`", "severity": "error" }, + { + "line": 786, + "column": 30, + "stop_line": 786, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 857, + "column": 30, + "stop_line": 857, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, { "line": 892, "column": 30, @@ -4045,9 +3913,9 @@ "severity": "error" }, { - "line": 963, + "line": 933, "column": 30, - "stop_line": 963, + "stop_line": 933, "stop_column": 47, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4057,9 +3925,9 @@ "severity": "error" }, { - "line": 998, + "line": 970, "column": 30, - "stop_line": 998, + "stop_line": 970, "stop_column": 47, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4069,33 +3937,9 @@ "severity": "error" }, { - "line": 1039, - "column": 30, - "stop_line": 1039, - "stop_column": 47, - "path": "src/documents/tests/test_api_custom_fields.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Document` has no attribute `custom_fields`", - "concise_description": "Object of class `Document` has no attribute `custom_fields`", - "severity": "error" - }, - { - "line": 1076, - "column": 30, - "stop_line": 1076, - "stop_column": 47, - "path": "src/documents/tests/test_api_custom_fields.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Document` has no attribute `custom_fields`", - "concise_description": "Object of class `Document` has no attribute `custom_fields`", - "severity": "error" - }, - { - "line": 1171, + "line": 1065, "column": 26, - "stop_line": 1171, + "stop_line": 1065, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4105,9 +3949,9 @@ "severity": "error" }, { - "line": 1172, + "line": 1066, "column": 26, - "stop_line": 1172, + "stop_line": 1066, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4117,9 +3961,9 @@ "severity": "error" }, { - "line": 1173, + "line": 1067, "column": 26, - "stop_line": 1173, + "stop_line": 1067, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4129,9 +3973,9 @@ "severity": "error" }, { - "line": 1190, + "line": 1084, "column": 26, - "stop_line": 1190, + "stop_line": 1084, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4141,9 +3985,9 @@ "severity": "error" }, { - "line": 1207, + "line": 1101, "column": 26, - "stop_line": 1207, + "stop_line": 1101, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4153,9 +3997,9 @@ "severity": "error" }, { - "line": 1208, + "line": 1102, "column": 26, - "stop_line": 1208, + "stop_line": 1102, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4165,9 +4009,9 @@ "severity": "error" }, { - "line": 1209, + "line": 1103, "column": 26, - "stop_line": 1209, + "stop_line": 1103, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4177,9 +4021,9 @@ "severity": "error" }, { - "line": 1221, + "line": 1115, "column": 26, - "stop_line": 1221, + "stop_line": 1115, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4189,9 +4033,9 @@ "severity": "error" }, { - "line": 1222, + "line": 1116, "column": 26, - "stop_line": 1222, + "stop_line": 1116, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4201,9 +4045,9 @@ "severity": "error" }, { - "line": 1223, + "line": 1117, "column": 26, - "stop_line": 1223, + "stop_line": 1117, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4213,9 +4057,9 @@ "severity": "error" }, { - "line": 1248, + "line": 1142, "column": 26, - "stop_line": 1248, + "stop_line": 1142, "stop_column": 44, "path": "src/documents/tests/test_api_custom_fields.py", "code": -2, @@ -4225,9 +4069,21 @@ "severity": "error" }, { - "line": 316, + "line": 1236, + "column": 13, + "stop_line": 1236, + "stop_column": 37, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 306, "column": 44, - "stop_line": 316, + "stop_line": 306, "stop_column": 67, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4237,9 +4093,9 @@ "severity": "error" }, { - "line": 331, + "line": 321, "column": 31, - "stop_line": 331, + "stop_line": 321, "stop_column": 54, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4249,9 +4105,9 @@ "severity": "error" }, { - "line": 361, + "line": 351, "column": 44, - "stop_line": 361, + "stop_line": 351, "stop_column": 67, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4261,9 +4117,9 @@ "severity": "error" }, { - "line": 383, + "line": 373, "column": 20, - "stop_line": 383, + "stop_line": 373, "stop_column": 43, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4273,9 +4129,9 @@ "severity": "error" }, { - "line": 421, + "line": 411, "column": 19, - "stop_line": 421, + "stop_line": 411, "stop_column": 35, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4285,153 +4141,33 @@ "severity": "error" }, { - "line": 1192, - "column": 47, - "stop_line": 1192, - "stop_column": 60, + "line": 453, + "column": 19, + "stop_line": 453, + "stop_column": 35, "path": "src/documents/tests/test_api_documents.py", "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", "severity": "error" }, { - "line": 1235, - "column": 47, - "stop_line": 1235, - "stop_column": 60, + "line": 1435, + "column": 13, + "stop_line": 1435, + "stop_column": 20, "path": "src/documents/tests/test_api_documents.py", "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "name": "bad-argument-type", + "description": "Argument `bytes` is not assignable to parameter `data` with type `str` in function `rest_framework.test.APIClient.generic`", + "concise_description": "Argument `bytes` is not assignable to parameter `data` with type `str` in function `rest_framework.test.APIClient.generic`", "severity": "error" }, { - "line": 1266, - "column": 47, - "stop_line": 1266, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1279, - "column": 47, - "stop_line": 1279, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1292, - "column": 47, - "stop_line": 1292, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1313, - "column": 47, - "stop_line": 1313, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1335, - "column": 47, - "stop_line": 1335, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1349, - "column": 47, - "stop_line": 1349, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1371, - "column": 47, - "stop_line": 1371, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1385, - "column": 47, - "stop_line": 1385, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1407, - "column": 47, - "stop_line": 1407, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1421, - "column": 47, - "stop_line": 1421, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1438, + "line": 1713, "column": 31, - "stop_line": 1438, + "stop_line": 1713, "stop_column": 48, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4441,69 +4177,9 @@ "severity": "error" }, { - "line": 1444, - "column": 47, - "stop_line": 1444, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1460, - "column": 47, - "stop_line": 1460, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1488, - "column": 47, - "stop_line": 1488, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1512, - "column": 47, - "stop_line": 1512, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1546, - "column": 47, - "stop_line": 1546, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1593, + "line": 1868, "column": 9, - "stop_line": 1593, + "stop_line": 1868, "stop_column": 25, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4513,57 +4189,9 @@ "severity": "error" }, { - "line": 1608, - "column": 47, - "stop_line": 1608, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1654, - "column": 47, - "stop_line": 1654, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1726, - "column": 47, - "stop_line": 1726, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1750, - "column": 47, - "stop_line": 1750, - "stop_column": 60, - "path": "src/documents/tests/test_api_documents.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 1781, + "line": 2056, "column": 20, - "stop_line": 1781, + "stop_line": 2056, "stop_column": 52, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4573,9 +4201,33 @@ "severity": "error" }, { - "line": 2089, + "line": 2549, + "column": 31, + "stop_line": 2549, + "stop_column": 52, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `User` has no attribute `ui_settings`", + "concise_description": "Object of class `User` has no attribute `ui_settings`", + "severity": "error" + }, + { + "line": 2569, + "column": 31, + "stop_line": 2569, + "stop_column": 52, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `User` has no attribute `ui_settings`", + "concise_description": "Object of class `User` has no attribute `ui_settings`", + "severity": "error" + }, + { + "line": 2587, "column": 26, - "stop_line": 2089, + "stop_line": 2587, "stop_column": 41, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4585,9 +4237,9 @@ "severity": "error" }, { - "line": 2101, + "line": 2599, "column": 26, - "stop_line": 2101, + "stop_line": 2599, "stop_column": 41, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4597,9 +4249,9 @@ "severity": "error" }, { - "line": 2109, + "line": 2607, "column": 26, - "stop_line": 2109, + "stop_line": 2607, "stop_column": 41, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4609,9 +4261,9 @@ "severity": "error" }, { - "line": 2110, + "line": 2608, "column": 26, - "stop_line": 2110, + "stop_line": 2608, "stop_column": 41, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4621,9 +4273,9 @@ "severity": "error" }, { - "line": 2118, + "line": 2616, "column": 26, - "stop_line": 2118, + "stop_line": 2616, "stop_column": 41, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4633,9 +4285,9 @@ "severity": "error" }, { - "line": 2527, + "line": 2968, "column": 27, - "stop_line": 2527, + "stop_line": 2968, "stop_column": 39, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4645,9 +4297,9 @@ "severity": "error" }, { - "line": 2528, + "line": 2969, "column": 33, - "stop_line": 2528, + "stop_line": 2969, "stop_column": 51, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4657,9 +4309,9 @@ "severity": "error" }, { - "line": 2529, + "line": 2970, "column": 35, - "stop_line": 2529, + "stop_line": 2970, "stop_column": 55, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4669,9 +4321,9 @@ "severity": "error" }, { - "line": 2530, + "line": 2971, "column": 34, - "stop_line": 2530, + "stop_line": 2971, "stop_column": 53, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4681,9 +4333,9 @@ "severity": "error" }, { - "line": 3129, + "line": 3598, "column": 20, - "stop_line": 3129, + "stop_line": 3598, "stop_column": 52, "path": "src/documents/tests/test_api_documents.py", "code": -2, @@ -4693,15 +4345,15 @@ "severity": "error" }, { - "line": 3466, - "column": 39, - "stop_line": 3466, - "stop_column": 53, + "line": 3938, + "column": 23, + "stop_line": 3938, + "stop_column": 50, "path": "src/documents/tests/test_api_documents.py", "code": -2, - "name": "bad-argument-type", - "description": "Argument `list[bool] | list[date] | list[float] | list[int] | list[str]` is not assignable to parameter `iterable` with type `Iterable[bool]` in function `enumerate.__new__`", - "concise_description": "Argument `list[bool] | list[date] | list[float] | list[int] | list[str]` is not assignable to parameter `iterable` with type `Iterable[bool]` in function `enumerate.__new__`", + "name": "bad-unpacking", + "description": "Expected argument after ** to have `str` keys, got: dict[str, list[dict[str, str]]] | list[bool] | list[date] | list[float] | list[int] | list[str] | str in function `django.db.models.manager.Manager.create`", + "concise_description": "Expected argument after ** to have `str` keys, got: dict[str, list[dict[str, str]]] | list[bool] | list[date] | list[float] | list[int] | list[str] | str in function `django.db.models.manager.Manager.create`", "severity": "error" }, { @@ -4897,93 +4549,9 @@ "severity": "error" }, { - "line": 53, - "column": 52, - "stop_line": 53, - "stop_column": 65, - "path": "src/documents/tests/test_api_tasks.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 57, - "column": 52, - "stop_line": 57, - "stop_column": 65, - "path": "src/documents/tests/test_api_tasks.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 235, - "column": 20, - "stop_line": 235, - "stop_column": 33, - "path": "src/documents/tests/test_api_tasks.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 261, - "column": 20, - "stop_line": 261, - "stop_column": 33, - "path": "src/documents/tests/test_api_tasks.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 291, - "column": 20, - "stop_line": 291, - "stop_column": 33, - "path": "src/documents/tests/test_api_tasks.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 317, - "column": 20, - "stop_line": 317, - "stop_column": 33, - "path": "src/documents/tests/test_api_tasks.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 355, - "column": 20, - "stop_line": 355, - "stop_column": 33, - "path": "src/documents/tests/test_api_tasks.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 73, + "line": 83, "column": 23, - "stop_line": 73, + "stop_line": 83, "stop_column": 49, "path": "src/documents/tests/test_api_uisettings.py", "code": -2, @@ -5281,21 +4849,9 @@ "severity": "error" }, { - "line": 29, - "column": 12, - "stop_line": 29, - "stop_column": 20, - "path": "src/documents/tests/test_barcodes.py", - "code": -2, - "name": "missing-import", - "description": "Cannot find module `zxingcpp`\n Looked in these locations (from config in `/home/trenton/projects/paperless-ngx/pyproject.toml`):\n Search path (from config file): [\"/home/trenton/projects/paperless-ngx/src\"]\n Import root (inferred from project layout): \"/home/trenton/projects/paperless-ngx/src\"\n Site package path queried from interpreter: [\"/home/trenton/.local/share/uv/python/cpython-3.13.4-linux-x86_64-gnu/lib/python3.13\", \"/home/trenton/.local/share/uv/python/cpython-3.13.4-linux-x86_64-gnu/lib/python3.13/lib-dynload\", \"/home/trenton/projects/paperless-ngx/.venv/lib/python3.13/site-packages\"]", - "concise_description": "Cannot find module `zxingcpp`", - "severity": "error" - }, - { - "line": 42, + "line": 34, "column": 13, - "stop_line": 42, + "stop_line": 34, "stop_column": 54, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5305,9 +4861,9 @@ "severity": "error" }, { - "line": 43, + "line": 35, "column": 13, - "stop_line": 43, + "stop_line": 35, "stop_column": 22, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5317,9 +4873,9 @@ "severity": "error" }, { - "line": 597, + "line": 588, "column": 9, - "stop_line": 597, + "stop_line": 588, "stop_column": 36, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5329,9 +4885,9 @@ "severity": "error" }, { - "line": 598, + "line": 589, "column": 9, - "stop_line": 598, + "stop_line": 589, "stop_column": 34, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5341,9 +4897,9 @@ "severity": "error" }, { - "line": 599, + "line": 590, "column": 9, - "stop_line": 599, + "stop_line": 590, "stop_column": 24, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5353,9 +4909,9 @@ "severity": "error" }, { - "line": 631, + "line": 621, "column": 21, - "stop_line": 631, + "stop_line": 621, "stop_column": 42, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5365,21 +4921,21 @@ "severity": "error" }, { - "line": 667, + "line": 657, "column": 5, - "stop_line": 667, + "stop_line": 657, "stop_column": 20, "path": "src/documents/tests/test_barcodes.py", "code": -2, - "name": "bad-argument-type", - "description": "Argument `(self: Self@TestAsnBarcode, filepath: Path) -> BarcodePlugin` is not assignable to parameter `func` with type `(self: Self@TestAsnBarcode, filepath: Path) -> Iterator[@_]` in function `contextlib.contextmanager`\n Protocol `Iterator` requires attribute `__next__`", - "concise_description": "Argument `(self: Self@TestAsnBarcode, filepath: Path) -> BarcodePlugin` is not assignable to parameter `func` with type `(self: Self@TestAsnBarcode, filepath: Path) -> Iterator[@_]` in function `contextlib.contextmanager`", + "name": "no-matching-overload", + "description": "No matching overload found for function `contextlib.contextmanager` called with arguments: ((self: Self@TestAsnBarcode, filepath: Path) -> BarcodePlugin)\n Possible overloads:\n (func: (ParamSpec(_P)) -> Generator[_T_co, None, object]) -> (ParamSpec(_P)) -> _GeneratorContextManager[_T_co] [closest match]\n (func: (ParamSpec(_P)) -> Iterator[_T_co]) -> (ParamSpec(_P)) -> _GeneratorContextManager[_T_co]", + "concise_description": "No matching overload found for function `contextlib.contextmanager` called with arguments: ((self: Self@TestAsnBarcode, filepath: Path) -> BarcodePlugin)", "severity": "error" }, { - "line": 668, + "line": 658, "column": 45, - "stop_line": 668, + "stop_line": 658, "stop_column": 58, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5389,9 +4945,9 @@ "severity": "error" }, { - "line": 672, + "line": 662, "column": 13, - "stop_line": 672, + "stop_line": 662, "stop_column": 54, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5401,9 +4957,9 @@ "severity": "error" }, { - "line": 673, + "line": 663, "column": 13, - "stop_line": 673, + "stop_line": 663, "stop_column": 34, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5413,9 +4969,9 @@ "severity": "error" }, { - "line": 785, + "line": 775, "column": 30, - "stop_line": 785, + "stop_line": 775, "stop_column": 60, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5425,21 +4981,21 @@ "severity": "error" }, { - "line": 848, + "line": 815, "column": 5, - "stop_line": 848, + "stop_line": 815, "stop_column": 20, "path": "src/documents/tests/test_barcodes.py", "code": -2, - "name": "bad-argument-type", - "description": "Argument `(self: Self@TestTagBarcode, filepath: Path) -> BarcodePlugin` is not assignable to parameter `func` with type `(self: Self@TestTagBarcode, filepath: Path) -> Iterator[@_]` in function `contextlib.contextmanager`\n Protocol `Iterator` requires attribute `__next__`", - "concise_description": "Argument `(self: Self@TestTagBarcode, filepath: Path) -> BarcodePlugin` is not assignable to parameter `func` with type `(self: Self@TestTagBarcode, filepath: Path) -> Iterator[@_]` in function `contextlib.contextmanager`", + "name": "no-matching-overload", + "description": "No matching overload found for function `contextlib.contextmanager` called with arguments: ((self: Self@TestTagBarcode, filepath: Path) -> BarcodePlugin)\n Possible overloads:\n (func: (ParamSpec(_P)) -> Generator[_T_co, None, object]) -> (ParamSpec(_P)) -> _GeneratorContextManager[_T_co] [closest match]\n (func: (ParamSpec(_P)) -> Iterator[_T_co]) -> (ParamSpec(_P)) -> _GeneratorContextManager[_T_co]", + "concise_description": "No matching overload found for function `contextlib.contextmanager` called with arguments: ((self: Self@TestTagBarcode, filepath: Path) -> BarcodePlugin)", "severity": "error" }, { - "line": 849, + "line": 816, "column": 45, - "stop_line": 849, + "stop_line": 816, "stop_column": 58, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5449,9 +5005,9 @@ "severity": "error" }, { - "line": 853, + "line": 820, "column": 13, - "stop_line": 853, + "stop_line": 820, "stop_column": 54, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5461,9 +5017,9 @@ "severity": "error" }, { - "line": 854, + "line": 821, "column": 13, - "stop_line": 854, + "stop_line": 821, "stop_column": 34, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5473,9 +5029,9 @@ "severity": "error" }, { - "line": 1094, + "line": 1062, "column": 30, - "stop_line": 1094, + "stop_line": 1062, "stop_column": 52, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5485,9 +5041,9 @@ "severity": "error" }, { - "line": 1098, + "line": 1066, "column": 30, - "stop_line": 1098, + "stop_line": 1066, "stop_column": 52, "path": "src/documents/tests/test_barcodes.py", "code": -2, @@ -5497,9 +5053,9 @@ "severity": "error" }, { - "line": 74, + "line": 73, "column": 13, - "stop_line": 74, + "stop_line": 73, "stop_column": 23, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5509,9 +5065,9 @@ "severity": "error" }, { - "line": 83, + "line": 82, "column": 81, - "stop_line": 83, + "stop_line": 82, "stop_column": 85, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5521,9 +5077,9 @@ "severity": "error" }, { - "line": 93, + "line": 92, "column": 13, - "stop_line": 93, + "stop_line": 92, "stop_column": 24, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5533,9 +5089,9 @@ "severity": "error" }, { - "line": 102, + "line": 101, "column": 81, - "stop_line": 102, + "stop_line": 101, "stop_column": 85, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5545,9 +5101,9 @@ "severity": "error" }, { - "line": 121, + "line": 120, "column": 13, - "stop_line": 121, + "stop_line": 120, "stop_column": 24, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5557,9 +5113,9 @@ "severity": "error" }, { - "line": 145, + "line": 144, "column": 13, - "stop_line": 145, + "stop_line": 144, "stop_column": 24, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5569,9 +5125,9 @@ "severity": "error" }, { - "line": 152, + "line": 151, "column": 13, - "stop_line": 152, + "stop_line": 151, "stop_column": 17, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5581,9 +5137,9 @@ "severity": "error" }, { - "line": 243, + "line": 242, "column": 13, - "stop_line": 243, + "stop_line": 242, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5593,9 +5149,9 @@ "severity": "error" }, { - "line": 247, + "line": 246, "column": 13, - "stop_line": 247, + "stop_line": 246, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5605,9 +5161,9 @@ "severity": "error" }, { - "line": 303, + "line": 302, "column": 13, - "stop_line": 303, + "stop_line": 302, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5617,9 +5173,9 @@ "severity": "error" }, { - "line": 307, + "line": 306, "column": 13, - "stop_line": 307, + "stop_line": 306, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5629,9 +5185,9 @@ "severity": "error" }, { - "line": 311, + "line": 310, "column": 13, - "stop_line": 311, + "stop_line": 310, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5641,9 +5197,9 @@ "severity": "error" }, { - "line": 315, + "line": 314, "column": 13, - "stop_line": 315, + "stop_line": 314, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5653,9 +5209,9 @@ "severity": "error" }, { - "line": 319, + "line": 318, "column": 13, - "stop_line": 319, + "stop_line": 318, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5665,9 +5221,9 @@ "severity": "error" }, { - "line": 324, + "line": 323, "column": 13, - "stop_line": 324, + "stop_line": 323, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5677,9 +5233,9 @@ "severity": "error" }, { - "line": 340, + "line": 339, "column": 13, - "stop_line": 340, + "stop_line": 339, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5689,9 +5245,9 @@ "severity": "error" }, { - "line": 344, + "line": 343, "column": 13, - "stop_line": 344, + "stop_line": 343, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5701,9 +5257,9 @@ "severity": "error" }, { - "line": 368, + "line": 367, "column": 13, - "stop_line": 368, + "stop_line": 367, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5713,9 +5269,9 @@ "severity": "error" }, { - "line": 372, + "line": 371, "column": 13, - "stop_line": 372, + "stop_line": 371, "stop_column": 36, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5725,9 +5281,9 @@ "severity": "error" }, { - "line": 416, + "line": 462, "column": 48, - "stop_line": 416, + "stop_line": 462, "stop_column": 50, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5737,9 +5293,9 @@ "severity": "error" }, { - "line": 422, + "line": 468, "column": 26, - "stop_line": 422, + "stop_line": 468, "stop_column": 49, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5749,9 +5305,9 @@ "severity": "error" }, { - "line": 460, + "line": 506, "column": 48, - "stop_line": 460, + "stop_line": 506, "stop_column": 50, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5761,9 +5317,9 @@ "severity": "error" }, { - "line": 466, + "line": 512, "column": 26, - "stop_line": 466, + "stop_line": 512, "stop_column": 49, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5773,9 +5329,9 @@ "severity": "error" }, { - "line": 481, + "line": 527, "column": 19, - "stop_line": 481, + "stop_line": 527, "stop_column": 40, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5785,9 +5341,9 @@ "severity": "error" }, { - "line": 490, + "line": 536, "column": 27, - "stop_line": 490, + "stop_line": 536, "stop_column": 48, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5797,9 +5353,9 @@ "severity": "error" }, { - "line": 499, + "line": 545, "column": 19, - "stop_line": 499, + "stop_line": 545, "stop_column": 40, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5809,9 +5365,9 @@ "severity": "error" }, { - "line": 508, + "line": 554, "column": 27, - "stop_line": 508, + "stop_line": 554, "stop_column": 48, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5821,9 +5377,9 @@ "severity": "error" }, { - "line": 517, + "line": 563, "column": 19, - "stop_line": 517, + "stop_line": 563, "stop_column": 40, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5833,9 +5389,9 @@ "severity": "error" }, { - "line": 550, + "line": 596, "column": 19, - "stop_line": 550, + "stop_line": 596, "stop_column": 40, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5845,9 +5401,9 @@ "severity": "error" }, { - "line": 555, + "line": 601, "column": 27, - "stop_line": 555, + "stop_line": 601, "stop_column": 48, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5857,21 +5413,33 @@ "severity": "error" }, { - "line": 895, - "column": 31, - "stop_line": 895, - "stop_column": 62, + "line": 670, + "column": 24, + "stop_line": 670, + "stop_column": 45, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, - "name": "unsupported-operation", - "description": "`-` is not supported between `None` and `int`\n Argument `None` is not assignable to parameter `value` with type `int` in function `int.__rsub__`", - "concise_description": "`-` is not supported between `None` and `int`", + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", "severity": "error" }, { - "line": 1125, + "line": 907, + "column": 24, + "stop_line": 907, + "stop_column": 45, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 1447, "column": 20, - "stop_line": 1125, + "stop_line": 1447, "stop_column": 41, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5881,9 +5449,9 @@ "severity": "error" }, { - "line": 1183, + "line": 1523, "column": 20, - "stop_line": 1183, + "stop_line": 1523, "stop_column": 41, "path": "src/documents/tests/test_bulk_edit.py", "code": -2, @@ -5893,15 +5461,15 @@ "severity": "error" }, { - "line": 38, - "column": 25, - "stop_line": 38, - "stop_column": 29, - "path": "src/documents/tests/test_checks.py", + "line": 1581, + "column": 20, + "stop_line": 1581, + "stop_column": 41, + "path": "src/documents/tests/test_bulk_edit.py", "code": -2, - "name": "unexpected-keyword", - "description": "Unexpected keyword argument `hint` in function `BaseException.__init__`", - "concise_description": "Unexpected keyword argument `hint` in function `BaseException.__init__`", + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", "severity": "error" }, { @@ -5941,153 +5509,45 @@ "severity": "error" }, { - "line": 691, - "column": 13, - "stop_line": 691, - "stop_column": 34, + "line": 461, + "column": 40, + "stop_line": 461, + "stop_column": 66, + "path": "src/documents/tests/test_classifier.py", + "code": -2, + "name": "missing-module-attribute", + "description": "Could not import `InconsistentVersionWarning` from `sklearn.exceptions`", + "concise_description": "Could not import `InconsistentVersionWarning` from `sklearn.exceptions`", + "severity": "error" + }, + { + "line": 481, + "column": 17, + "stop_line": 481, + "stop_column": 25, "path": "src/documents/tests/test_classifier.py", "code": -2, "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `scratch_dir`", - "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "description": "Object of class `NoneType` has no attribute `append`", + "concise_description": "Object of class `NoneType` has no attribute `append`", "severity": "error" }, { - "line": 694, - "column": 24, - "stop_line": 694, - "stop_column": 45, - "path": "src/documents/tests/test_classifier.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `scratch_dir`", - "concise_description": "Class `dirs` has no class attribute `scratch_dir`", - "severity": "error" - }, - { - "line": 38, - "column": 9, - "stop_line": 38, - "stop_column": 21, + "line": 104, + "column": 16, + "stop_line": 104, + "stop_column": 27, "path": "src/documents/tests/test_consumer.py", "code": -2, - "name": "bad-override", - "description": "Class member `_BaseTestParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `_BaseTestParser.get_settings` has type `BoundMethod[_BaseTestParser, (self: _BaseTestParser) -> None]`, which is not assignable to `BoundMethod[_BaseTestParser, (self: _BaseTestParser) -> Never]`, the type of `DocumentParser.get_settings`", - "concise_description": "Class member `_BaseTestParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", + "name": "bad-return", + "description": "Returned type `Path | None` is not assignable to declared return type `Path`", + "concise_description": "Returned type `Path | None` is not assignable to declared return type `Path`", "severity": "error" }, { - "line": 51, - "column": 9, - "stop_line": 51, - "stop_column": 22, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "bad-override", - "description": "Class member `DummyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner\n `DummyParser.get_thumbnail` has type `BoundMethod[DummyParser, (self: DummyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> str]`, which is not assignable to `BoundMethod[DummyParser, (self: DummyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.get_thumbnail`", - "concise_description": "Class member `DummyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 54, - "column": 9, - "stop_line": 54, - "stop_column": 14, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "bad-override", - "description": "Class member `DummyParser.parse` overrides parent class `_BaseTestParser` in an inconsistent manner\n `DummyParser.parse` has type `BoundMethod[DummyParser, (self: DummyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[DummyParser, (self: DummyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.parse`", - "concise_description": "Class member `DummyParser.parse` overrides parent class `_BaseTestParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 59, - "column": 9, - "stop_line": 59, - "stop_column": 22, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "bad-override", - "description": "Class member `CopyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner\n `CopyParser.get_thumbnail` has type `BoundMethod[CopyParser, (self: CopyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> str]`, which is not assignable to `BoundMethod[CopyParser, (self: CopyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.get_thumbnail`", - "concise_description": "Class member `CopyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 66, - "column": 9, - "stop_line": 66, - "stop_column": 14, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "bad-override", - "description": "Class member `CopyParser.parse` overrides parent class `_BaseTestParser` in an inconsistent manner\n `CopyParser.parse` has type `BoundMethod[CopyParser, (self: CopyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[CopyParser, (self: CopyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.parse`", - "concise_description": "Class member `CopyParser.parse` overrides parent class `_BaseTestParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 77, - "column": 9, - "stop_line": 77, - "stop_column": 22, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "bad-override", - "description": "Class member `FaultyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner\n `FaultyParser.get_thumbnail` has type `BoundMethod[FaultyParser, (self: FaultyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> str]`, which is not assignable to `BoundMethod[FaultyParser, (self: FaultyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.get_thumbnail`", - "concise_description": "Class member `FaultyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 89, - "column": 9, - "stop_line": 89, - "stop_column": 22, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "bad-override", - "description": "Class member `FaultyGenericExceptionParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner\n `FaultyGenericExceptionParser.get_thumbnail` has type `BoundMethod[FaultyGenericExceptionParser, (self: FaultyGenericExceptionParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> str]`, which is not assignable to `BoundMethod[FaultyGenericExceptionParser, (self: FaultyGenericExceptionParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.get_thumbnail`", - "concise_description": "Class member `FaultyGenericExceptionParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 147, - "column": 13, - "stop_line": 147, - "stop_column": 34, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `scratch_dir`", - "concise_description": "Class `dirs` has no class attribute `scratch_dir`", - "severity": "error" - }, - { - "line": 152, - "column": 44, - "stop_line": 152, - "stop_column": 65, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `scratch_dir`", - "concise_description": "Class `dirs` has no class attribute `scratch_dir`", - "severity": "error" - }, - { - "line": 159, - "column": 60, - "stop_line": 159, - "stop_column": 81, - "path": "src/documents/tests/test_consumer.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `scratch_dir`", - "concise_description": "Class `dirs` has no class attribute `scratch_dir`", - "severity": "error" - }, - { - "line": 186, + "line": 209, "column": 15, - "stop_line": 186, + "stop_line": 209, "stop_column": 36, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6097,9 +5557,9 @@ "severity": "error" }, { - "line": 198, + "line": 221, "column": 15, - "stop_line": 198, + "stop_line": 221, "stop_column": 36, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6109,9 +5569,9 @@ "severity": "error" }, { - "line": 206, + "line": 229, "column": 15, - "stop_line": 206, + "stop_line": 229, "stop_column": 36, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6121,9 +5581,9 @@ "severity": "error" }, { - "line": 239, + "line": 266, "column": 27, - "stop_line": 239, + "stop_line": 266, "stop_column": 48, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6133,9 +5593,9 @@ "severity": "error" }, { - "line": 257, + "line": 290, "column": 28, - "stop_line": 257, + "stop_line": 290, "stop_column": 49, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6145,9 +5605,9 @@ "severity": "error" }, { - "line": 320, + "line": 353, "column": 26, - "stop_line": 320, + "stop_line": 353, "stop_column": 51, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6157,9 +5617,9 @@ "severity": "error" }, { - "line": 334, + "line": 367, "column": 26, - "stop_line": 334, + "stop_line": 367, "stop_column": 48, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6169,9 +5629,9 @@ "severity": "error" }, { - "line": 348, + "line": 381, "column": 26, - "stop_line": 348, + "stop_line": 381, "stop_column": 47, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6181,9 +5641,9 @@ "severity": "error" }, { - "line": 364, + "line": 397, "column": 27, - "stop_line": 364, + "stop_line": 397, "stop_column": 40, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6193,9 +5653,9 @@ "severity": "error" }, { - "line": 365, + "line": 398, "column": 30, - "stop_line": 365, + "stop_line": 398, "stop_column": 43, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6205,9 +5665,9 @@ "severity": "error" }, { - "line": 366, + "line": 399, "column": 27, - "stop_line": 366, + "stop_line": 399, "stop_column": 40, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6217,9 +5677,9 @@ "severity": "error" }, { - "line": 391, + "line": 424, "column": 56, - "stop_line": 391, + "stop_line": 424, "stop_column": 78, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6229,9 +5689,9 @@ "severity": "error" }, { - "line": 396, + "line": 429, "column": 26, - "stop_line": 396, + "stop_line": 429, "stop_column": 48, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6241,9 +5701,9 @@ "severity": "error" }, { - "line": 398, + "line": 431, "column": 13, - "stop_line": 398, + "stop_line": 431, "stop_column": 35, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6253,9 +5713,9 @@ "severity": "error" }, { - "line": 412, + "line": 445, "column": 26, - "stop_line": 412, + "stop_line": 445, "stop_column": 56, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6265,9 +5725,9 @@ "severity": "error" }, { - "line": 440, + "line": 465, "column": 26, - "stop_line": 440, + "stop_line": 465, "stop_column": 40, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6277,9 +5737,9 @@ "severity": "error" }, { - "line": 454, + "line": 479, "column": 26, - "stop_line": 454, + "stop_line": 479, "stop_column": 40, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6289,9 +5749,9 @@ "severity": "error" }, { - "line": 473, + "line": 498, "column": 64, - "stop_line": 473, + "stop_line": 498, "stop_column": 72, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6301,9 +5761,9 @@ "severity": "error" }, { - "line": 475, + "line": 500, "column": 65, - "stop_line": 475, + "stop_line": 500, "stop_column": 73, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6313,9 +5773,9 @@ "severity": "error" }, { - "line": 543, + "line": 568, "column": 13, - "stop_line": 543, + "stop_line": 568, "stop_column": 28, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6325,9 +5785,9 @@ "severity": "error" }, { - "line": 639, + "line": 649, "column": 26, - "stop_line": 639, + "stop_line": 649, "stop_column": 40, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6337,9 +5797,9 @@ "severity": "error" }, { - "line": 640, + "line": 650, "column": 26, - "stop_line": 640, + "stop_line": 650, "stop_column": 43, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6349,9 +5809,9 @@ "severity": "error" }, { - "line": 641, + "line": 651, "column": 26, - "stop_line": 641, + "stop_line": 651, "stop_column": 51, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6361,9 +5821,45 @@ "severity": "error" }, { - "line": 667, + "line": 673, + "column": 34, + "stop_line": 673, + "stop_column": 51, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `obj` with type `Sized` in function `len`\n Protocol `Sized` requires attribute `__len__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `obj` with type `Sized` in function `len`", + "severity": "error" + }, + { + "line": 675, + "column": 17, + "stop_line": 675, + "stop_column": 42, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `obj` with type `Sized` in function `len`\n Protocol `Sized` requires attribute `__len__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `obj` with type `Sized` in function `len`", + "severity": "error" + }, + { + "line": 679, + "column": 27, + "stop_line": 679, + "stop_column": 48, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 708, "column": 26, - "stop_line": 667, + "stop_line": 708, "stop_column": 40, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6373,9 +5869,9 @@ "severity": "error" }, { - "line": 669, + "line": 710, "column": 27, - "stop_line": 669, + "stop_line": 710, "stop_column": 47, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6385,9 +5881,9 @@ "severity": "error" }, { - "line": 670, + "line": 711, "column": 27, - "stop_line": 670, + "stop_line": 711, "stop_column": 48, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6397,9 +5893,81 @@ "severity": "error" }, { - "line": 697, + "line": 773, + "column": 13, + "stop_line": 773, + "stop_column": 34, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 783, + "column": 13, + "stop_line": 783, + "stop_column": 34, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 835, + "column": 13, + "stop_line": 835, + "stop_column": 34, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 845, + "column": 13, + "stop_line": 845, + "stop_column": 34, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 888, + "column": 17, + "stop_line": 888, + "stop_column": 38, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 898, + "column": 17, + "stop_line": 898, + "stop_column": 38, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 944, "column": 26, - "stop_line": 697, + "stop_line": 944, "stop_column": 48, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6409,9 +5977,9 @@ "severity": "error" }, { - "line": 698, + "line": 945, "column": 26, - "stop_line": 698, + "stop_line": 945, "stop_column": 48, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6421,9 +5989,9 @@ "severity": "error" }, { - "line": 699, + "line": 946, "column": 27, - "stop_line": 699, + "stop_line": 946, "stop_column": 40, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6433,9 +6001,9 @@ "severity": "error" }, { - "line": 700, + "line": 947, "column": 30, - "stop_line": 700, + "stop_line": 947, "stop_column": 43, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6445,9 +6013,9 @@ "severity": "error" }, { - "line": 743, + "line": 990, "column": 9, - "stop_line": 743, + "stop_line": 990, "stop_column": 24, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6457,9 +6025,9 @@ "severity": "error" }, { - "line": 750, + "line": 997, "column": 37, - "stop_line": 750, + "stop_line": 997, "stop_column": 51, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6469,9 +6037,9 @@ "severity": "error" }, { - "line": 750, + "line": 997, "column": 56, - "stop_line": 750, + "stop_line": 997, "stop_column": 67, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6481,9 +6049,9 @@ "severity": "error" }, { - "line": 828, + "line": 1066, "column": 26, - "stop_line": 828, + "stop_line": 1066, "stop_column": 39, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6493,9 +6061,9 @@ "severity": "error" }, { - "line": 829, + "line": 1067, "column": 26, - "stop_line": 829, + "stop_line": 1067, "stop_column": 47, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6505,9 +6073,9 @@ "severity": "error" }, { - "line": 831, + "line": 1069, "column": 26, - "stop_line": 831, + "stop_line": 1069, "stop_column": 39, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6517,9 +6085,9 @@ "severity": "error" }, { - "line": 832, + "line": 1070, "column": 26, - "stop_line": 832, + "stop_line": 1070, "stop_column": 47, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6529,9 +6097,9 @@ "severity": "error" }, { - "line": 834, + "line": 1072, "column": 26, - "stop_line": 834, + "stop_line": 1072, "stop_column": 39, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6541,9 +6109,9 @@ "severity": "error" }, { - "line": 835, + "line": 1073, "column": 26, - "stop_line": 835, + "stop_line": 1073, "stop_column": 47, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6553,9 +6121,9 @@ "severity": "error" }, { - "line": 934, + "line": 1169, "column": 15, - "stop_line": 934, + "stop_line": 1169, "stop_column": 36, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6565,9 +6133,9 @@ "severity": "error" }, { - "line": 943, + "line": 1178, "column": 13, - "stop_line": 943, + "stop_line": 1178, "stop_column": 29, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6577,9 +6145,9 @@ "severity": "error" }, { - "line": 964, + "line": 1199, "column": 15, - "stop_line": 964, + "stop_line": 1199, "stop_column": 36, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6589,9 +6157,9 @@ "severity": "error" }, { - "line": 973, + "line": 1208, "column": 13, - "stop_line": 973, + "stop_line": 1208, "stop_column": 29, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6601,9 +6169,9 @@ "severity": "error" }, { - "line": 994, + "line": 1229, "column": 15, - "stop_line": 994, + "stop_line": 1229, "stop_column": 36, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6613,9 +6181,9 @@ "severity": "error" }, { - "line": 1003, + "line": 1238, "column": 13, - "stop_line": 1003, + "stop_line": 1238, "stop_column": 29, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6625,9 +6193,9 @@ "severity": "error" }, { - "line": 1026, + "line": 1261, "column": 15, - "stop_line": 1026, + "stop_line": 1261, "stop_column": 36, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6637,9 +6205,9 @@ "severity": "error" }, { - "line": 1035, + "line": 1270, "column": 13, - "stop_line": 1035, + "stop_line": 1270, "stop_column": 29, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6649,9 +6217,9 @@ "severity": "error" }, { - "line": 1050, + "line": 1285, "column": 26, - "stop_line": 1050, + "stop_line": 1285, "stop_column": 47, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6661,9 +6229,9 @@ "severity": "error" }, { - "line": 1161, + "line": 1410, "column": 26, - "stop_line": 1161, + "stop_line": 1410, "stop_column": 47, "path": "src/documents/tests/test_consumer.py", "code": -2, @@ -6732,6 +6300,18 @@ "concise_description": "Argument `tuple[float | Unknown, ...]` is not assignable to parameter `times` with type `tuple[float, float] | tuple[int, int] | None` in function `os.utime`", "severity": "error" }, + { + "line": 86, + "column": 54, + "stop_line": 86, + "stop_column": 57, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "severity": "error" + }, { "line": 106, "column": 18, @@ -6744,6 +6324,30 @@ "concise_description": "Class `dirs` has no class attribute `consumption_dir`", "severity": "error" }, + { + "line": 132, + "column": 54, + "stop_line": 132, + "stop_column": 57, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "severity": "error" + }, + { + "line": 215, + "column": 25, + "stop_line": 215, + "stop_column": 71, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "bad-specialization", + "description": "`str | None` is not assignable to upper bound `bytes | str` of type variable `AnyStr`", + "concise_description": "`str | None` is not assignable to upper bound `bytes | str` of type variable `AnyStr`", + "severity": "error" + }, { "line": 240, "column": 21, @@ -6757,21 +6361,45 @@ "severity": "error" }, { - "line": 505, - "column": 18, - "stop_line": 505, - "stop_column": 34, - "path": "src/documents/tests/test_file_handling.py", + "line": 255, + "column": 25, + "stop_line": 255, + "stop_column": 71, + "path": "src/documents/tests/test_double_sided.py", "code": -2, - "name": "bad-argument-type", - "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", - "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "name": "bad-specialization", + "description": "`str | None` is not assignable to upper bound `bytes | str` of type variable `AnyStr`", + "concise_description": "`str | None` is not assignable to upper bound `bytes | str` of type variable `AnyStr`", "severity": "error" }, { - "line": 588, + "line": 232, + "column": 38, + "stop_line": 232, + "stop_column": 54, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "concise_description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "severity": "error" + }, + { + "line": 233, + "column": 9, + "stop_line": 233, + "stop_column": 37, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `write_bytes`", + "concise_description": "Object of class `NoneType` has no attribute `write_bytes`", + "severity": "error" + }, + { + "line": 250, "column": 27, - "stop_line": 588, + "stop_line": 250, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6782,8 +6410,20 @@ }, { "line": 608, - "column": 27, + "column": 18, "stop_line": 608, + "stop_column": 34, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 691, + "column": 27, + "stop_line": 691, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6793,9 +6433,21 @@ "severity": "error" }, { - "line": 635, + "line": 711, + "column": 27, + "stop_line": 711, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 738, "column": 30, - "stop_line": 635, + "stop_line": 738, "stop_column": 46, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6805,9 +6457,9 @@ "severity": "error" }, { - "line": 658, + "line": 761, "column": 27, - "stop_line": 658, + "stop_line": 761, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6817,9 +6469,9 @@ "severity": "error" }, { - "line": 682, + "line": 785, "column": 27, - "stop_line": 682, + "stop_line": 785, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6829,9 +6481,9 @@ "severity": "error" }, { - "line": 704, + "line": 807, "column": 27, - "stop_line": 704, + "stop_line": 807, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6841,9 +6493,9 @@ "severity": "error" }, { - "line": 735, + "line": 838, "column": 27, - "stop_line": 735, + "stop_line": 838, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6853,9 +6505,9 @@ "severity": "error" }, { - "line": 755, + "line": 858, "column": 27, - "stop_line": 755, + "stop_line": 858, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6865,9 +6517,9 @@ "severity": "error" }, { - "line": 786, + "line": 889, "column": 27, - "stop_line": 786, + "stop_line": 889, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6877,9 +6529,9 @@ "severity": "error" }, { - "line": 806, + "line": 909, "column": 27, - "stop_line": 806, + "stop_line": 909, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6889,9 +6541,9 @@ "severity": "error" }, { - "line": 814, + "line": 917, "column": 30, - "stop_line": 814, + "stop_line": 917, "stop_column": 46, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6901,9 +6553,9 @@ "severity": "error" }, { - "line": 841, + "line": 944, "column": 27, - "stop_line": 841, + "stop_line": 944, "stop_column": 44, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6913,9 +6565,9 @@ "severity": "error" }, { - "line": 848, + "line": 951, "column": 27, - "stop_line": 848, + "stop_line": 951, "stop_column": 44, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6925,9 +6577,9 @@ "severity": "error" }, { - "line": 874, + "line": 977, "column": 27, - "stop_line": 874, + "stop_line": 977, "stop_column": 43, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6937,9 +6589,9 @@ "severity": "error" }, { - "line": 1657, + "line": 1883, "column": 31, - "stop_line": 1657, + "stop_line": 1883, "stop_column": 48, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6949,9 +6601,21 @@ "severity": "error" }, { - "line": 1680, + "line": 1906, "column": 31, - "stop_line": 1680, + "stop_line": 1906, + "stop_column": 48, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 1922, + "column": 31, + "stop_line": 1922, "stop_column": 48, "path": "src/documents/tests/test_file_handling.py", "code": -2, @@ -6973,9 +6637,9 @@ "severity": "error" }, { - "line": 34, + "line": 45, "column": 39, - "stop_line": 34, + "stop_line": 45, "stop_column": 62, "path": "src/documents/tests/test_management.py", "code": -2, @@ -6985,9 +6649,9 @@ "severity": "error" }, { - "line": 40, + "line": 51, "column": 39, - "stop_line": 40, + "stop_line": 51, "stop_column": 62, "path": "src/documents/tests/test_management.py", "code": -2, @@ -6997,9 +6661,9 @@ "severity": "error" }, { - "line": 48, + "line": 59, "column": 27, - "stop_line": 48, + "stop_line": 59, "stop_column": 43, "path": "src/documents/tests/test_management.py", "code": -2, @@ -7009,9 +6673,9 @@ "severity": "error" }, { - "line": 84, + "line": 95, "column": 39, - "stop_line": 84, + "stop_line": 95, "stop_column": 62, "path": "src/documents/tests/test_management.py", "code": -2, @@ -7021,9 +6685,9 @@ "severity": "error" }, { - "line": 85, + "line": 96, "column": 39, - "stop_line": 85, + "stop_line": 96, "stop_column": 62, "path": "src/documents/tests/test_management.py", "code": -2, @@ -7033,9 +6697,9 @@ "severity": "error" }, { - "line": 118, + "line": 190, "column": 14, - "stop_line": 118, + "stop_line": 190, "stop_column": 30, "path": "src/documents/tests/test_management.py", "code": -2, @@ -7045,9 +6709,9 @@ "severity": "error" }, { - "line": 128, + "line": 200, "column": 30, - "stop_line": 128, + "stop_line": 200, "stop_column": 46, "path": "src/documents/tests/test_management.py", "code": -2, @@ -7057,9 +6721,9 @@ "severity": "error" }, { - "line": 130, + "line": 202, "column": 27, - "stop_line": 130, + "stop_line": 202, "stop_column": 44, "path": "src/documents/tests/test_management.py", "code": -2, @@ -7069,9 +6733,9 @@ "severity": "error" }, { - "line": 56, + "line": 63, "column": 24, - "stop_line": 56, + "stop_line": 63, "stop_column": 52, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7081,9 +6745,9 @@ "severity": "error" }, { - "line": 56, + "line": 63, "column": 24, - "stop_line": 56, + "stop_line": 63, "stop_column": 52, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7093,9 +6757,9 @@ "severity": "error" }, { - "line": 182, + "line": 188, "column": 22, - "stop_line": 182, + "stop_line": 188, "stop_column": 27, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7105,9 +6769,9 @@ "severity": "error" }, { - "line": 190, + "line": 196, "column": 28, - "stop_line": 190, + "stop_line": 196, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7117,9 +6781,9 @@ "severity": "error" }, { - "line": 193, + "line": 199, "column": 18, - "stop_line": 193, + "stop_line": 199, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7129,9 +6793,9 @@ "severity": "error" }, { - "line": 292, + "line": 303, "column": 28, - "stop_line": 292, + "stop_line": 303, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7141,9 +6805,9 @@ "severity": "error" }, { - "line": 295, + "line": 306, "column": 18, - "stop_line": 295, + "stop_line": 306, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7153,9 +6817,9 @@ "severity": "error" }, { - "line": 304, + "line": 315, "column": 28, - "stop_line": 304, + "stop_line": 315, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7165,9 +6829,9 @@ "severity": "error" }, { - "line": 307, + "line": 318, "column": 18, - "stop_line": 307, + "stop_line": 318, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7177,9 +6841,9 @@ "severity": "error" }, { - "line": 343, + "line": 417, "column": 28, - "stop_line": 343, + "stop_line": 417, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7189,9 +6853,9 @@ "severity": "error" }, { - "line": 346, + "line": 420, "column": 18, - "stop_line": 346, + "stop_line": 420, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7200,95 +6864,11 @@ "concise_description": "Class `dirs` has no class attribute `media_dir`", "severity": "error" }, - { - "line": 373, - "column": 28, - "stop_line": 373, - "stop_column": 47, - "path": "src/documents/tests/test_management_exporter.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", - "severity": "error" - }, - { - "line": 376, - "column": 18, - "stop_line": 376, - "stop_column": 37, - "path": "src/documents/tests/test_management_exporter.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", - "severity": "error" - }, - { - "line": 408, - "column": 28, - "stop_line": 408, - "stop_column": 47, - "path": "src/documents/tests/test_management_exporter.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", - "severity": "error" - }, - { - "line": 411, - "column": 18, - "stop_line": 411, - "stop_column": 37, - "path": "src/documents/tests/test_management_exporter.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", - "severity": "error" - }, - { - "line": 433, - "column": 24, - "stop_line": 433, - "stop_column": 47, - "path": "src/documents/tests/test_management_exporter.py", - "code": -2, - "name": "missing-argument", - "description": "Missing argument `ignore_errors` in function `unittest.case.TestCase.addCleanup`", - "concise_description": "Missing argument `ignore_errors` in function `unittest.case.TestCase.addCleanup`", - "severity": "error" - }, - { - "line": 433, - "column": 24, - "stop_line": 433, - "stop_column": 47, - "path": "src/documents/tests/test_management_exporter.py", - "code": -2, - "name": "missing-argument", - "description": "Missing argument `onerror` in function `unittest.case.TestCase.addCleanup`", - "concise_description": "Missing argument `onerror` in function `unittest.case.TestCase.addCleanup`", - "severity": "error" - }, - { - "line": 453, - "column": 28, - "stop_line": 453, - "stop_column": 47, - "path": "src/documents/tests/test_management_exporter.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", - "severity": "error" - }, { "line": 456, - "column": 18, + "column": 28, "stop_line": 456, - "stop_column": 37, + "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, "name": "missing-attribute", @@ -7297,15 +6877,15 @@ "severity": "error" }, { - "line": 461, - "column": 22, - "stop_line": 461, - "stop_column": 27, + "line": 459, + "column": 18, + "stop_line": 459, + "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, - "name": "bad-argument-type", - "description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", - "concise_description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", "severity": "error" }, { @@ -7333,21 +6913,9 @@ "severity": "error" }, { - "line": 497, - "column": 26, - "stop_line": 497, - "stop_column": 31, - "path": "src/documents/tests/test_management_exporter.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", - "concise_description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", - "severity": "error" - }, - { - "line": 526, + "line": 521, "column": 28, - "stop_line": 526, + "stop_line": 521, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7357,9 +6925,9 @@ "severity": "error" }, { - "line": 529, + "line": 524, "column": 18, - "stop_line": 529, + "stop_line": 524, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7369,9 +6937,57 @@ "severity": "error" }, { - "line": 543, + "line": 546, + "column": 24, + "stop_line": 546, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `ignore_errors` in function `unittest.case.TestCase.addCleanup`", + "concise_description": "Missing argument `ignore_errors` in function `unittest.case.TestCase.addCleanup`", + "severity": "error" + }, + { + "line": 546, + "column": 24, + "stop_line": 546, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `onerror` in function `unittest.case.TestCase.addCleanup`", + "concise_description": "Missing argument `onerror` in function `unittest.case.TestCase.addCleanup`", + "severity": "error" + }, + { + "line": 566, + "column": 28, + "stop_line": 566, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 569, + "column": 18, + "stop_line": 569, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 574, "column": 22, - "stop_line": 543, + "stop_line": 574, "stop_column": 27, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7381,9 +6997,9 @@ "severity": "error" }, { - "line": 624, + "line": 598, "column": 28, - "stop_line": 624, + "stop_line": 598, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7393,9 +7009,9 @@ "severity": "error" }, { - "line": 627, + "line": 601, "column": 18, - "stop_line": 627, + "stop_line": 601, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7405,9 +7021,21 @@ "severity": "error" }, { - "line": 665, + "line": 609, + "column": 26, + "stop_line": 609, + "stop_column": 31, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "concise_description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "severity": "error" + }, + { + "line": 637, "column": 28, - "stop_line": 665, + "stop_line": 637, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7417,9 +7045,9 @@ "severity": "error" }, { - "line": 668, + "line": 640, "column": 18, - "stop_line": 668, + "stop_line": 640, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7429,9 +7057,21 @@ "severity": "error" }, { - "line": 708, + "line": 654, + "column": 22, + "stop_line": 654, + "stop_column": 27, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "concise_description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "severity": "error" + }, + { + "line": 735, "column": 28, - "stop_line": 708, + "stop_line": 735, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7441,9 +7081,9 @@ "severity": "error" }, { - "line": 711, + "line": 738, "column": 18, - "stop_line": 711, + "stop_line": 738, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7453,9 +7093,9 @@ "severity": "error" }, { - "line": 739, + "line": 781, "column": 28, - "stop_line": 739, + "stop_line": 781, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7465,9 +7105,9 @@ "severity": "error" }, { - "line": 742, + "line": 784, "column": 18, - "stop_line": 742, + "stop_line": 784, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7477,9 +7117,9 @@ "severity": "error" }, { - "line": 764, + "line": 829, "column": 28, - "stop_line": 764, + "stop_line": 829, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7489,9 +7129,9 @@ "severity": "error" }, { - "line": 767, + "line": 832, "column": 18, - "stop_line": 767, + "stop_line": 832, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7501,9 +7141,9 @@ "severity": "error" }, { - "line": 799, + "line": 865, "column": 28, - "stop_line": 799, + "stop_line": 865, "stop_column": 47, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7513,9 +7153,9 @@ "severity": "error" }, { - "line": 802, + "line": 868, "column": 18, - "stop_line": 802, + "stop_line": 868, "stop_column": 37, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7525,9 +7165,117 @@ "severity": "error" }, { - "line": 823, + "line": 895, + "column": 28, + "stop_line": 895, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 898, + "column": 18, + "stop_line": 898, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 925, + "column": 28, + "stop_line": 925, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 928, + "column": 18, + "stop_line": 928, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 965, + "column": 28, + "stop_line": 965, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 968, + "column": 18, + "stop_line": 968, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 988, + "column": 28, + "stop_line": 988, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 991, + "column": 18, + "stop_line": 991, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 1000, + "column": 13, + "stop_line": 1000, + "stop_column": 54, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `QuerySet` has no attribute `hard_delete`", + "concise_description": "Object of class `QuerySet` has no attribute `hard_delete`", + "severity": "error" + }, + { + "line": 1035, "column": 23, - "stop_line": 823, + "stop_line": 1035, "stop_column": 42, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7537,9 +7285,9 @@ "severity": "error" }, { - "line": 826, + "line": 1038, "column": 13, - "stop_line": 826, + "stop_line": 1038, "stop_column": 32, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7549,9 +7297,9 @@ "severity": "error" }, { - "line": 836, + "line": 1048, "column": 23, - "stop_line": 836, + "stop_line": 1048, "stop_column": 42, "path": "src/documents/tests/test_management_exporter.py", "code": -2, @@ -7561,9 +7309,9 @@ "severity": "error" }, { - "line": 41, + "line": 43, "column": 21, - "stop_line": 41, + "stop_line": 43, "stop_column": 42, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7573,9 +7321,9 @@ "severity": "error" }, { - "line": 59, + "line": 62, "column": 25, - "stop_line": 59, + "stop_line": 62, "stop_column": 46, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7585,9 +7333,9 @@ "severity": "error" }, { - "line": 67, + "line": 70, "column": 21, - "stop_line": 67, + "stop_line": 70, "stop_column": 42, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7597,9 +7345,9 @@ "severity": "error" }, { - "line": 85, + "line": 89, "column": 25, - "stop_line": 85, + "stop_line": 89, "stop_column": 46, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7609,9 +7357,9 @@ "severity": "error" }, { - "line": 96, + "line": 100, "column": 21, - "stop_line": 96, + "stop_line": 100, "stop_column": 42, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7621,9 +7369,9 @@ "severity": "error" }, { - "line": 200, + "line": 217, "column": 10, - "stop_line": 200, + "stop_line": 217, "stop_column": 33, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7633,9 +7381,9 @@ "severity": "error" }, { - "line": 202, + "line": 219, "column": 10, - "stop_line": 202, + "stop_line": 219, "stop_column": 33, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7645,9 +7393,9 @@ "severity": "error" }, { - "line": 210, + "line": 227, "column": 21, - "stop_line": 210, + "stop_line": 227, "stop_column": 42, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7657,9 +7405,9 @@ "severity": "error" }, { - "line": 238, + "line": 256, "column": 21, - "stop_line": 238, + "stop_line": 256, "stop_column": 42, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7669,9 +7417,9 @@ "severity": "error" }, { - "line": 274, + "line": 293, "column": 21, - "stop_line": 274, + "stop_line": 293, "stop_column": 42, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7681,33 +7429,9 @@ "severity": "error" }, { - "line": 294, + "line": 314, "column": 10, - "stop_line": 294, - "stop_column": 31, - "path": "src/documents/tests/test_management_importer.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `scratch_dir`", - "concise_description": "Class `dirs` has no class attribute `scratch_dir`", - "severity": "error" - }, - { - "line": 301, - "column": 21, - "stop_line": 301, - "stop_column": 42, - "path": "src/documents/tests/test_management_importer.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `scratch_dir`", - "concise_description": "Class `dirs` has no class attribute `scratch_dir`", - "severity": "error" - }, - { - "line": 320, - "column": 10, - "stop_line": 320, + "stop_line": 314, "stop_column": 31, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7718,20 +7442,8 @@ }, { "line": 321, - "column": 10, - "stop_line": 321, - "stop_column": 31, - "path": "src/documents/tests/test_management_importer.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `scratch_dir`", - "concise_description": "Class `dirs` has no class attribute `scratch_dir`", - "severity": "error" - }, - { - "line": 330, "column": 21, - "stop_line": 330, + "stop_line": 321, "stop_column": 42, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7741,9 +7453,45 @@ "severity": "error" }, { - "line": 350, + "line": 341, + "column": 10, + "stop_line": 341, + "stop_column": 31, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 342, + "column": 10, + "stop_line": 342, + "stop_column": 31, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 351, + "column": 21, + "stop_line": 351, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 372, "column": 20, - "stop_line": 350, + "stop_line": 372, "stop_column": 41, "path": "src/documents/tests/test_management_importer.py", "code": -2, @@ -7752,6 +7500,18 @@ "concise_description": "Class `dirs` has no class attribute `scratch_dir`", "severity": "error" }, + { + "line": 89, + "column": 9, + "stop_line": 89, + "stop_column": 34, + "path": "src/documents/tests/test_migration_sha256_checksums.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `TestMigrations` has no attribute `_fixture_teardown`", + "concise_description": "Object of class `TestMigrations` has no attribute `_fixture_teardown`", + "severity": "error" + }, { "line": 25, "column": 30, @@ -7777,10 +7537,10 @@ "severity": "error" }, { - "line": 154, + "line": 38, "column": 17, - "stop_line": 154, - "stop_column": 58, + "stop_line": 38, + "stop_column": 73, "path": "src/documents/tests/test_parsers.py", "code": -2, "name": "not-callable", @@ -7789,10 +7549,10 @@ "severity": "error" }, { - "line": 178, + "line": 62, "column": 17, - "stop_line": 178, - "stop_column": 58, + "stop_line": 62, + "stop_column": 73, "path": "src/documents/tests/test_parsers.py", "code": -2, "name": "not-callable", @@ -7801,10 +7561,10 @@ "severity": "error" }, { - "line": 211, - "column": 17, - "stop_line": 211, - "stop_column": 58, + "line": 96, + "column": 21, + "stop_line": 96, + "stop_column": 77, "path": "src/documents/tests/test_parsers.py", "code": -2, "name": "not-callable", @@ -7813,147 +7573,51 @@ "severity": "error" }, { - "line": 27, - "column": 22, - "stop_line": 27, - "stop_column": 45, - "path": "src/documents/tests/test_sanity_check.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `originals_dir`", - "concise_description": "Class `dirs` has no class attribute `originals_dir`", - "severity": "error" - }, - { - "line": 37, - "column": 22, - "stop_line": 37, - "stop_column": 43, - "path": "src/documents/tests/test_sanity_check.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `archive_dir`", - "concise_description": "Class `dirs` has no class attribute `archive_dir`", - "severity": "error" - }, - { - "line": 47, - "column": 22, - "stop_line": 47, - "stop_column": 45, - "path": "src/documents/tests/test_sanity_check.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `thumbnail_dir`", - "concise_description": "Class `dirs` has no class attribute `thumbnail_dir`", - "severity": "error" - }, - { - "line": 123, + "line": 133, "column": 14, - "stop_line": 123, - "stop_column": 30, - "path": "src/documents/tests/test_sanity_check.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", - "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", - "severity": "error" - }, - { - "line": 128, - "column": 14, - "stop_line": 128, - "stop_column": 30, - "path": "src/documents/tests/test_sanity_check.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", - "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", - "severity": "error" - }, - { - "line": 130, - "column": 14, - "stop_line": 130, - "stop_column": 30, - "path": "src/documents/tests/test_sanity_check.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", - "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", - "severity": "error" - }, - { - "line": 153, - "column": 14, - "stop_line": 153, + "stop_line": 133, "stop_column": 37, "path": "src/documents/tests/test_sanity_check.py", "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `originals_dir`", - "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", "severity": "error" }, { - "line": 157, - "column": 32, - "stop_line": 157, - "stop_column": 36, + "line": 152, + "column": 24, + "stop_line": 152, + "stop_column": 47, "path": "src/documents/tests/test_sanity_check.py", "code": -2, - "name": "bad-index", - "description": "Cannot index into `dict[int, list[dict[Unknown, Unknown]]]`\n Argument `None` is not assignable to parameter `key` with type `int` in function `dict.__getitem__`", - "concise_description": "Cannot index into `dict[int, list[dict[Unknown, Unknown]]]`", + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", "severity": "error" }, { - "line": 166, - "column": 25, - "stop_line": 166, - "stop_column": 44, - "path": "src/documents/tests/test_sanity_check.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", - "severity": "error" - }, - { - "line": 168, + "line": 165, "column": 14, - "stop_line": 168, - "stop_column": 33, + "stop_line": 165, + "stop_column": 37, "path": "src/documents/tests/test_sanity_check.py", "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", "severity": "error" }, { - "line": 174, - "column": 14, - "stop_line": 174, - "stop_column": 33, + "line": 258, + "column": 16, + "stop_line": 258, + "stop_column": 55, "path": "src/documents/tests/test_sanity_check.py", "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", - "severity": "error" - }, - { - "line": 175, - "column": 14, - "stop_line": 175, - "stop_column": 33, - "path": "src/documents/tests/test_sanity_check.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", + "name": "not-iterable", + "description": "`in` is not supported between `Literal['Check logs for details']` and `None`", + "concise_description": "`in` is not supported between `Literal['Check logs for details']` and `None`", "severity": "error" }, { @@ -8029,9 +7693,9 @@ "severity": "error" }, { - "line": 94, + "line": 96, "column": 23, - "stop_line": 94, + "stop_line": 96, "stop_column": 35, "path": "src/documents/tests/test_tag_hierarchy.py", "code": -2, @@ -8041,9 +7705,9 @@ "severity": "error" }, { - "line": 107, + "line": 109, "column": 23, - "stop_line": 107, + "stop_line": 109, "stop_column": 35, "path": "src/documents/tests/test_tag_hierarchy.py", "code": -2, @@ -8053,9 +7717,21 @@ "severity": "error" }, { - "line": 54, + "line": 27, + "column": 20, + "stop_line": 27, + "stop_column": 56, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `create_user`", + "concise_description": "Object of class `Manager` has no attribute `create_user`", + "severity": "error" + }, + { + "line": 62, "column": 35, - "stop_line": 54, + "stop_line": 62, "stop_column": 59, "path": "src/documents/tests/test_task_signals.py", "code": -2, @@ -8065,21 +7741,9 @@ "severity": "error" }, { - "line": 77, - "column": 26, - "stop_line": 77, - "stop_column": 39, - "path": "src/documents/tests/test_task_signals.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 98, + "line": 106, "column": 35, - "stop_line": 98, + "stop_line": 106, "stop_column": 58, "path": "src/documents/tests/test_task_signals.py", "code": -2, @@ -8089,21 +7753,9 @@ "severity": "error" }, { - "line": 117, - "column": 26, - "stop_line": 117, - "stop_column": 39, - "path": "src/documents/tests/test_task_signals.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 137, + "line": 145, "column": 35, - "stop_line": 137, + "stop_line": 145, "stop_column": 57, "path": "src/documents/tests/test_task_signals.py", "code": -2, @@ -8113,33 +7765,9 @@ "severity": "error" }, { - "line": 154, - "column": 19, - "stop_line": 154, - "stop_column": 32, - "path": "src/documents/tests/test_task_signals.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 159, - "column": 26, - "stop_line": 159, - "stop_column": 39, - "path": "src/documents/tests/test_task_signals.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 179, + "line": 187, "column": 35, - "stop_line": 179, + "stop_line": 187, "stop_column": 57, "path": "src/documents/tests/test_task_signals.py", "code": -2, @@ -8149,21 +7777,9 @@ "severity": "error" }, { - "line": 200, - "column": 26, - "stop_line": 200, - "stop_column": 39, - "path": "src/documents/tests/test_task_signals.py", - "code": -2, - "name": "implicit-import", - "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", - "severity": "error" - }, - { - "line": 216, + "line": 227, "column": 19, - "stop_line": 216, + "stop_line": 227, "stop_column": 40, "path": "src/documents/tests/test_tasks.py", "code": -2, @@ -8173,9 +7789,9 @@ "severity": "error" }, { - "line": 225, + "line": 236, "column": 27, - "stop_line": 225, + "stop_line": 236, "stop_column": 48, "path": "src/documents/tests/test_tasks.py", "code": -2, @@ -8185,9 +7801,9 @@ "severity": "error" }, { - "line": 257, + "line": 268, "column": 19, - "stop_line": 257, + "stop_line": 268, "stop_column": 40, "path": "src/documents/tests/test_tasks.py", "code": -2, @@ -8197,21 +7813,21 @@ "severity": "error" }, { - "line": 335, + "line": 346, "column": 55, - "stop_line": 335, + "stop_line": 346, "stop_column": 66, "path": "src/documents/tests/test_tasks.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", - "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", "severity": "error" }, { - "line": 41, + "line": 46, "column": 26, - "stop_line": 41, + "stop_line": 46, "stop_column": 38, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8221,9 +7837,9 @@ "severity": "error" }, { - "line": 66, + "line": 71, "column": 17, - "stop_line": 66, + "stop_line": 71, "stop_column": 53, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8233,9 +7849,9 @@ "severity": "error" }, { - "line": 70, + "line": 75, "column": 17, - "stop_line": 70, + "stop_line": 75, "stop_column": 52, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8245,9 +7861,9 @@ "severity": "error" }, { - "line": 74, + "line": 79, "column": 17, - "stop_line": 74, + "stop_line": 79, "stop_column": 52, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8257,9 +7873,9 @@ "severity": "error" }, { - "line": 78, + "line": 83, "column": 17, - "stop_line": 78, + "stop_line": 83, "stop_column": 54, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8269,9 +7885,9 @@ "severity": "error" }, { - "line": 82, + "line": 87, "column": 17, - "stop_line": 82, + "stop_line": 87, "stop_column": 49, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8281,9 +7897,9 @@ "severity": "error" }, { - "line": 97, + "line": 102, "column": 9, - "stop_line": 97, + "stop_line": 102, "stop_column": 24, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8293,9 +7909,9 @@ "severity": "error" }, { - "line": 98, + "line": 103, "column": 9, - "stop_line": 98, + "stop_line": 103, "stop_column": 20, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8305,9 +7921,9 @@ "severity": "error" }, { - "line": 103, + "line": 108, "column": 26, - "stop_line": 103, + "stop_line": 108, "stop_column": 41, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8317,9 +7933,9 @@ "severity": "error" }, { - "line": 120, + "line": 125, "column": 44, - "stop_line": 120, + "stop_line": 125, "stop_column": 67, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8329,9 +7945,9 @@ "severity": "error" }, { - "line": 159, + "line": 164, "column": 9, - "stop_line": 159, + "stop_line": 164, "stop_column": 24, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8341,9 +7957,9 @@ "severity": "error" }, { - "line": 168, + "line": 173, "column": 9, - "stop_line": 168, + "stop_line": 173, "stop_column": 24, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8353,9 +7969,9 @@ "severity": "error" }, { - "line": 369, + "line": 374, "column": 13, - "stop_line": 372, + "stop_line": 377, "stop_column": 26, "path": "src/documents/tests/test_views.py", "code": -2, @@ -8365,9 +7981,9 @@ "severity": "error" }, { - "line": 136, + "line": 140, "column": 30, - "stop_line": 136, + "stop_line": 140, "stop_column": 51, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8377,9 +7993,9 @@ "severity": "error" }, { - "line": 172, + "line": 176, "column": 13, - "stop_line": 172, + "stop_line": 176, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8389,9 +8005,9 @@ "severity": "error" }, { - "line": 186, + "line": 190, "column": 34, - "stop_line": 186, + "stop_line": 190, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8401,9 +8017,9 @@ "severity": "error" }, { - "line": 187, + "line": 191, "column": 34, - "stop_line": 187, + "stop_line": 191, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8413,9 +8029,9 @@ "severity": "error" }, { - "line": 188, + "line": 192, "column": 39, - "stop_line": 188, + "stop_line": 192, "stop_column": 52, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8425,9 +8041,9 @@ "severity": "error" }, { - "line": 189, + "line": 193, "column": 34, - "stop_line": 189, + "stop_line": 193, "stop_column": 55, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8437,9 +8053,9 @@ "severity": "error" }, { - "line": 190, + "line": 194, "column": 34, - "stop_line": 190, + "stop_line": 194, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8449,9 +8065,9 @@ "severity": "error" }, { - "line": 194, + "line": 198, "column": 29, - "stop_line": 194, + "stop_line": 198, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8461,21 +8077,21 @@ "severity": "error" }, { - "line": 201, + "line": 206, "column": 25, - "stop_line": 205, - "stop_column": 22, + "stop_line": 208, + "stop_column": 26, "path": "src/documents/tests/test_workflows.py", "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", - "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "name": "bad-argument-type", + "description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`", "severity": "error" }, { - "line": 203, + "line": 207, "column": 29, - "stop_line": 203, + "stop_line": 207, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8485,9 +8101,9 @@ "severity": "error" }, { - "line": 211, + "line": 215, "column": 29, - "stop_line": 211, + "stop_line": 215, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8497,21 +8113,21 @@ "severity": "error" }, { - "line": 218, + "line": 223, "column": 25, - "stop_line": 222, - "stop_column": 22, + "stop_line": 225, + "stop_column": 26, "path": "src/documents/tests/test_workflows.py", "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", - "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "name": "bad-argument-type", + "description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`", "severity": "error" }, { - "line": 220, + "line": 224, "column": 29, - "stop_line": 220, + "stop_line": 224, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8521,9 +8137,9 @@ "severity": "error" }, { - "line": 226, + "line": 230, "column": 21, - "stop_line": 226, + "stop_line": 230, "stop_column": 35, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8533,9 +8149,9 @@ "severity": "error" }, { - "line": 230, + "line": 234, "column": 26, - "stop_line": 230, + "stop_line": 234, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8545,9 +8161,9 @@ "severity": "error" }, { - "line": 234, + "line": 238, "column": 21, - "stop_line": 234, + "stop_line": 238, "stop_column": 43, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8557,9 +8173,9 @@ "severity": "error" }, { - "line": 283, + "line": 287, "column": 13, - "stop_line": 283, + "stop_line": 287, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8569,9 +8185,9 @@ "severity": "error" }, { - "line": 297, + "line": 301, "column": 34, - "stop_line": 297, + "stop_line": 301, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8581,9 +8197,9 @@ "severity": "error" }, { - "line": 298, + "line": 302, "column": 34, - "stop_line": 298, + "stop_line": 302, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8593,9 +8209,9 @@ "severity": "error" }, { - "line": 299, + "line": 303, "column": 39, - "stop_line": 299, + "stop_line": 303, "stop_column": 52, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8605,9 +8221,9 @@ "severity": "error" }, { - "line": 300, + "line": 304, "column": 34, - "stop_line": 300, + "stop_line": 304, "stop_column": 55, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8617,9 +8233,9 @@ "severity": "error" }, { - "line": 301, + "line": 305, "column": 34, - "stop_line": 301, + "stop_line": 305, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8629,9 +8245,9 @@ "severity": "error" }, { - "line": 305, + "line": 309, "column": 29, - "stop_line": 305, + "stop_line": 309, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8641,21 +8257,21 @@ "severity": "error" }, { - "line": 312, + "line": 317, "column": 25, - "stop_line": 316, - "stop_column": 22, + "stop_line": 319, + "stop_column": 26, "path": "src/documents/tests/test_workflows.py", "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", - "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "name": "bad-argument-type", + "description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`", "severity": "error" }, { - "line": 314, + "line": 318, "column": 29, - "stop_line": 314, + "stop_line": 318, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8665,9 +8281,9 @@ "severity": "error" }, { - "line": 322, + "line": 326, "column": 29, - "stop_line": 322, + "stop_line": 326, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8677,21 +8293,21 @@ "severity": "error" }, { - "line": 329, + "line": 334, "column": 25, - "stop_line": 333, - "stop_column": 22, + "stop_line": 336, + "stop_column": 26, "path": "src/documents/tests/test_workflows.py", "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", - "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "name": "bad-argument-type", + "description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`", "severity": "error" }, { - "line": 331, + "line": 335, "column": 29, - "stop_line": 331, + "stop_line": 335, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8701,9 +8317,9 @@ "severity": "error" }, { - "line": 337, + "line": 341, "column": 21, - "stop_line": 337, + "stop_line": 341, "stop_column": 35, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8713,9 +8329,9 @@ "severity": "error" }, { - "line": 357, + "line": 361, "column": 30, - "stop_line": 357, + "stop_line": 361, "stop_column": 51, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8725,9 +8341,9 @@ "severity": "error" }, { - "line": 401, + "line": 405, "column": 13, - "stop_line": 401, + "stop_line": 405, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8737,9 +8353,9 @@ "severity": "error" }, { - "line": 415, + "line": 419, "column": 34, - "stop_line": 415, + "stop_line": 419, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8749,9 +8365,9 @@ "severity": "error" }, { - "line": 417, + "line": 421, "column": 34, - "stop_line": 417, + "stop_line": 421, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8761,9 +8377,9 @@ "severity": "error" }, { - "line": 418, + "line": 422, "column": 34, - "stop_line": 418, + "stop_line": 422, "stop_column": 55, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8773,9 +8389,9 @@ "severity": "error" }, { - "line": 421, + "line": 425, "column": 26, - "stop_line": 421, + "stop_line": 425, "stop_column": 39, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8785,9 +8401,9 @@ "severity": "error" }, { - "line": 427, + "line": 431, "column": 29, - "stop_line": 427, + "stop_line": 431, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8797,9 +8413,9 @@ "severity": "error" }, { - "line": 452, + "line": 456, "column": 29, - "stop_line": 452, + "stop_line": 456, "stop_column": 50, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8809,9 +8425,9 @@ "severity": "error" }, { - "line": 469, + "line": 473, "column": 13, - "stop_line": 469, + "stop_line": 473, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8821,9 +8437,9 @@ "severity": "error" }, { - "line": 482, + "line": 486, "column": 34, - "stop_line": 482, + "stop_line": 486, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8833,9 +8449,9 @@ "severity": "error" }, { - "line": 521, + "line": 525, "column": 13, - "stop_line": 521, + "stop_line": 525, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8845,9 +8461,9 @@ "severity": "error" }, { - "line": 534, + "line": 538, "column": 35, - "stop_line": 534, + "stop_line": 538, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8857,9 +8473,9 @@ "severity": "error" }, { - "line": 535, + "line": 539, "column": 35, - "stop_line": 535, + "stop_line": 539, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8869,9 +8485,9 @@ "severity": "error" }, { - "line": 536, + "line": 540, "column": 34, - "stop_line": 536, + "stop_line": 540, "stop_column": 47, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8881,9 +8497,9 @@ "severity": "error" }, { - "line": 537, + "line": 541, "column": 35, - "stop_line": 537, + "stop_line": 541, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8893,9 +8509,9 @@ "severity": "error" }, { - "line": 538, + "line": 542, "column": 35, - "stop_line": 538, + "stop_line": 542, "stop_column": 49, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8905,9 +8521,9 @@ "severity": "error" }, { - "line": 541, + "line": 545, "column": 25, - "stop_line": 541, + "stop_line": 545, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8917,9 +8533,9 @@ "severity": "error" }, { - "line": 543, + "line": 547, "column": 28, - "stop_line": 543, + "stop_line": 547, "stop_column": 30, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8929,9 +8545,9 @@ "severity": "error" }, { - "line": 546, + "line": 550, "column": 34, - "stop_line": 546, + "stop_line": 550, "stop_column": 71, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8941,9 +8557,9 @@ "severity": "error" }, { - "line": 546, + "line": 550, "column": 56, - "stop_line": 546, + "stop_line": 550, "stop_column": 64, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8953,9 +8569,9 @@ "severity": "error" }, { - "line": 549, + "line": 553, "column": 25, - "stop_line": 549, + "stop_line": 553, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -8964,46 +8580,46 @@ "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", "severity": "error" }, - { - "line": 551, - "column": 28, - "stop_line": 551, - "stop_column": 30, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "bad-argument-count", - "description": "Missing positional argument `value` in function `list.count`", - "concise_description": "Missing positional argument `value` in function `list.count`", - "severity": "error" - }, - { - "line": 554, - "column": 34, - "stop_line": 554, - "stop_column": 71, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", - "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", - "severity": "error" - }, - { - "line": 554, - "column": 56, - "stop_line": 554, - "stop_column": 64, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", - "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", - "severity": "error" - }, { "line": 555, - "column": 34, + "column": 28, "stop_line": 555, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 558, + "column": 34, + "stop_line": 558, + "stop_column": 71, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 558, + "column": 56, + "stop_line": 558, + "stop_column": 64, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 559, + "column": 34, + "stop_line": 559, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9013,9 +8629,9 @@ "severity": "error" }, { - "line": 559, + "line": 563, "column": 45, - "stop_line": 559, + "stop_line": 563, "stop_column": 59, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9025,9 +8641,9 @@ "severity": "error" }, { - "line": 595, + "line": 599, "column": 13, - "stop_line": 595, + "stop_line": 599, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9037,9 +8653,9 @@ "severity": "error" }, { - "line": 608, + "line": 612, "column": 35, - "stop_line": 608, + "stop_line": 612, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9049,9 +8665,9 @@ "severity": "error" }, { - "line": 609, + "line": 613, "column": 35, - "stop_line": 609, + "stop_line": 613, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9061,9 +8677,9 @@ "severity": "error" }, { - "line": 610, + "line": 614, "column": 34, - "stop_line": 610, + "stop_line": 614, "stop_column": 47, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9073,9 +8689,9 @@ "severity": "error" }, { - "line": 611, + "line": 615, "column": 35, - "stop_line": 611, + "stop_line": 615, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9085,9 +8701,9 @@ "severity": "error" }, { - "line": 612, + "line": 616, "column": 35, - "stop_line": 612, + "stop_line": 616, "stop_column": 49, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9097,9 +8713,9 @@ "severity": "error" }, { - "line": 615, + "line": 619, "column": 25, - "stop_line": 615, + "stop_line": 619, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9108,58 +8724,10 @@ "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", "severity": "error" }, - { - "line": 617, - "column": 28, - "stop_line": 617, - "stop_column": 30, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "bad-argument-count", - "description": "Missing positional argument `value` in function `list.count`", - "concise_description": "Missing positional argument `value` in function `list.count`", - "severity": "error" - }, { "line": 621, - "column": 21, - "stop_line": 623, - "stop_column": 28, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", - "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", - "severity": "error" - }, - { - "line": 622, - "column": 25, - "stop_line": 622, - "stop_column": 33, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", - "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", - "severity": "error" - }, - { - "line": 628, - "column": 25, - "stop_line": 628, - "stop_column": 33, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", - "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", - "severity": "error" - }, - { - "line": 630, "column": 28, - "stop_line": 630, + "stop_line": 621, "stop_column": 30, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9169,9 +8737,9 @@ "severity": "error" }, { - "line": 634, + "line": 625, "column": 21, - "stop_line": 636, + "stop_line": 627, "stop_column": 28, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9181,9 +8749,9 @@ "severity": "error" }, { - "line": 635, + "line": 626, "column": 25, - "stop_line": 635, + "stop_line": 626, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9192,10 +8760,58 @@ "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", "severity": "error" }, + { + "line": 632, + "column": 25, + "stop_line": 632, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 634, + "column": 28, + "stop_line": 634, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 638, + "column": 21, + "stop_line": 640, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, { "line": 639, - "column": 34, + "column": 25, "stop_line": 639, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 643, + "column": 34, + "stop_line": 643, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9205,9 +8821,9 @@ "severity": "error" }, { - "line": 679, + "line": 685, "column": 13, - "stop_line": 679, + "stop_line": 685, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9217,9 +8833,9 @@ "severity": "error" }, { - "line": 693, + "line": 699, "column": 35, - "stop_line": 693, + "stop_line": 699, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9229,9 +8845,9 @@ "severity": "error" }, { - "line": 694, + "line": 700, "column": 35, - "stop_line": 694, + "stop_line": 700, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9241,9 +8857,9 @@ "severity": "error" }, { - "line": 695, + "line": 701, "column": 34, - "stop_line": 695, + "stop_line": 701, "stop_column": 47, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9253,9 +8869,9 @@ "severity": "error" }, { - "line": 696, + "line": 702, "column": 35, - "stop_line": 696, + "stop_line": 702, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9265,9 +8881,9 @@ "severity": "error" }, { - "line": 697, + "line": 703, "column": 35, - "stop_line": 697, + "stop_line": 703, "stop_column": 49, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9277,9 +8893,9 @@ "severity": "error" }, { - "line": 700, + "line": 706, "column": 25, - "stop_line": 700, + "stop_line": 706, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9289,9 +8905,9 @@ "severity": "error" }, { - "line": 702, + "line": 708, "column": 28, - "stop_line": 702, + "stop_line": 708, "stop_column": 30, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9301,9 +8917,9 @@ "severity": "error" }, { - "line": 706, + "line": 712, "column": 21, - "stop_line": 708, + "stop_line": 714, "stop_column": 28, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9312,18 +8928,6 @@ "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", "severity": "error" }, - { - "line": 707, - "column": 25, - "stop_line": 707, - "stop_column": 33, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", - "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", - "severity": "error" - }, { "line": 713, "column": 25, @@ -9332,14 +8936,26 @@ "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 719, + "column": 25, + "stop_line": 719, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", "severity": "error" }, { - "line": 715, + "line": 721, "column": 28, - "stop_line": 715, + "stop_line": 721, "stop_column": 30, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9349,9 +8965,9 @@ "severity": "error" }, { - "line": 719, + "line": 725, "column": 21, - "stop_line": 721, + "stop_line": 727, "stop_column": 28, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9361,9 +8977,9 @@ "severity": "error" }, { - "line": 720, + "line": 726, "column": 25, - "stop_line": 720, + "stop_line": 726, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9373,9 +8989,9 @@ "severity": "error" }, { - "line": 724, + "line": 730, "column": 34, - "stop_line": 724, + "stop_line": 730, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9385,9 +9001,9 @@ "severity": "error" }, { - "line": 764, + "line": 770, "column": 13, - "stop_line": 764, + "stop_line": 770, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9397,9 +9013,9 @@ "severity": "error" }, { - "line": 777, + "line": 783, "column": 35, - "stop_line": 777, + "stop_line": 783, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9409,9 +9025,9 @@ "severity": "error" }, { - "line": 778, + "line": 784, "column": 35, - "stop_line": 778, + "stop_line": 784, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9421,9 +9037,9 @@ "severity": "error" }, { - "line": 779, + "line": 785, "column": 34, - "stop_line": 779, + "stop_line": 785, "stop_column": 47, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9433,9 +9049,9 @@ "severity": "error" }, { - "line": 780, + "line": 786, "column": 35, - "stop_line": 780, + "stop_line": 786, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9445,9 +9061,9 @@ "severity": "error" }, { - "line": 781, + "line": 787, "column": 35, - "stop_line": 781, + "stop_line": 787, "stop_column": 49, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9457,9 +9073,9 @@ "severity": "error" }, { - "line": 784, + "line": 790, "column": 25, - "stop_line": 784, + "stop_line": 790, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9469,9 +9085,9 @@ "severity": "error" }, { - "line": 786, + "line": 792, "column": 28, - "stop_line": 786, + "stop_line": 792, "stop_column": 30, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9481,9 +9097,9 @@ "severity": "error" }, { - "line": 790, + "line": 796, "column": 21, - "stop_line": 792, + "stop_line": 798, "stop_column": 28, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9492,18 +9108,6 @@ "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", "severity": "error" }, - { - "line": 791, - "column": 25, - "stop_line": 791, - "stop_column": 33, - "path": "src/documents/tests/test_workflows.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", - "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", - "severity": "error" - }, { "line": 797, "column": 25, @@ -9512,14 +9116,26 @@ "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 803, + "column": 25, + "stop_line": 803, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", "severity": "error" }, { - "line": 799, + "line": 805, "column": 28, - "stop_line": 799, + "stop_line": 805, "stop_column": 30, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9529,9 +9145,9 @@ "severity": "error" }, { - "line": 803, + "line": 809, "column": 21, - "stop_line": 805, + "stop_line": 811, "stop_column": 28, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9541,9 +9157,9 @@ "severity": "error" }, { - "line": 804, + "line": 810, "column": 25, - "stop_line": 804, + "stop_line": 810, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9553,9 +9169,9 @@ "severity": "error" }, { - "line": 808, + "line": 814, "column": 34, - "stop_line": 808, + "stop_line": 814, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9565,9 +9181,9 @@ "severity": "error" }, { - "line": 882, + "line": 888, "column": 13, - "stop_line": 882, + "stop_line": 888, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9577,9 +9193,9 @@ "severity": "error" }, { - "line": 896, + "line": 902, "column": 26, - "stop_line": 896, + "stop_line": 902, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9589,45 +9205,57 @@ "severity": "error" }, { - "line": 1314, + "line": 963, + "column": 31, + "stop_line": 963, + "stop_column": 43, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 1435, "column": 40, - "stop_line": 1314, + "stop_line": 1435, "stop_column": 46, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", - "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", "severity": "error" }, { - "line": 1330, + "line": 1451, "column": 35, - "stop_line": 1330, + "stop_line": 1451, "stop_column": 41, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", - "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", "severity": "error" }, { - "line": 1349, + "line": 1470, "column": 39, - "stop_line": 1349, + "stop_line": 1470, "stop_column": 45, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", - "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", "severity": "error" }, { - "line": 1772, + "line": 1935, "column": 26, - "stop_line": 1772, + "stop_line": 1935, "stop_column": 43, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9637,9 +9265,9 @@ "severity": "error" }, { - "line": 1797, + "line": 1960, "column": 13, - "stop_line": 1797, + "stop_line": 1960, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9649,9 +9277,9 @@ "severity": "error" }, { - "line": 1809, + "line": 1972, "column": 17, - "stop_line": 1809, + "stop_line": 1972, "stop_column": 31, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9661,9 +9289,9 @@ "severity": "error" }, { - "line": 1855, + "line": 2018, "column": 26, - "stop_line": 1855, + "stop_line": 2018, "stop_column": 43, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9673,45 +9301,45 @@ "severity": "error" }, { - "line": 1904, + "line": 2067, "column": 38, - "stop_line": 1907, + "stop_line": 2070, "stop_column": 10, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-assignment", - "description": "`list[str] | Any` is not assignable to `QuerySet[Unknown, Unknown]`", - "concise_description": "`list[str] | Any` is not assignable to `QuerySet[Unknown, Unknown]`", + "description": "`list[str] | Any` is not assignable to `QuerySet[Unknown]`", + "concise_description": "`list[str] | Any` is not assignable to `QuerySet[Unknown]`", "severity": "error" }, { - "line": 1908, + "line": 2071, "column": 40, - "stop_line": 1911, + "stop_line": 2074, "stop_column": 10, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-assignment", - "description": "`list[str] | Any` is not assignable to `QuerySet[Unknown, Unknown]`", - "concise_description": "`list[str] | Any` is not assignable to `QuerySet[Unknown, Unknown]`", + "description": "`list[str] | Any` is not assignable to `QuerySet[Unknown]`", + "concise_description": "`list[str] | Any` is not assignable to `QuerySet[Unknown]`", "severity": "error" }, { - "line": 1919, + "line": 2082, "column": 33, - "stop_line": 1919, + "stop_line": 2082, "stop_column": 59, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-assignment", - "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", - "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown]`", + "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown]`", "severity": "error" }, { - "line": 2598, + "line": 2845, "column": 26, - "stop_line": 2598, + "stop_line": 2845, "stop_column": 43, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9721,21 +9349,21 @@ "severity": "error" }, { - "line": 2601, + "line": 2848, "column": 33, - "stop_line": 2601, + "stop_line": 2848, "stop_column": 59, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-assignment", - "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", - "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown]`", + "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown]`", "severity": "error" }, { - "line": 2669, + "line": 2916, "column": 26, - "stop_line": 2669, + "stop_line": 2916, "stop_column": 43, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9745,21 +9373,21 @@ "severity": "error" }, { - "line": 2672, + "line": 2919, "column": 33, - "stop_line": 2672, + "stop_line": 2919, "stop_column": 59, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-assignment", - "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", - "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown]`", + "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown]`", "severity": "error" }, { - "line": 2736, + "line": 2983, "column": 13, - "stop_line": 2736, + "stop_line": 2983, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9769,9 +9397,9 @@ "severity": "error" }, { - "line": 2751, + "line": 2998, "column": 35, - "stop_line": 2751, + "stop_line": 2998, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9781,9 +9409,9 @@ "severity": "error" }, { - "line": 2752, + "line": 2999, "column": 35, - "stop_line": 2752, + "stop_line": 2999, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9793,9 +9421,9 @@ "severity": "error" }, { - "line": 2754, + "line": 3001, "column": 26, - "stop_line": 2754, + "stop_line": 3001, "stop_column": 39, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9805,9 +9433,9 @@ "severity": "error" }, { - "line": 2757, + "line": 3004, "column": 35, - "stop_line": 2757, + "stop_line": 3004, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9817,9 +9445,9 @@ "severity": "error" }, { - "line": 2758, + "line": 3005, "column": 35, - "stop_line": 2758, + "stop_line": 3005, "stop_column": 49, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9829,9 +9457,9 @@ "severity": "error" }, { - "line": 2762, + "line": 3009, "column": 29, - "stop_line": 2762, + "stop_line": 3009, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9841,21 +9469,21 @@ "severity": "error" }, { - "line": 2769, + "line": 3017, "column": 25, - "stop_line": 2773, - "stop_column": 22, + "stop_line": 3019, + "stop_column": 26, "path": "src/documents/tests/test_workflows.py", "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", - "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "name": "bad-argument-type", + "description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`", "severity": "error" }, { - "line": 2771, + "line": 3018, "column": 29, - "stop_line": 2771, + "stop_line": 3018, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9865,9 +9493,9 @@ "severity": "error" }, { - "line": 2779, + "line": 3026, "column": 29, - "stop_line": 2779, + "stop_line": 3026, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9877,21 +9505,21 @@ "severity": "error" }, { - "line": 2786, + "line": 3034, "column": 25, - "stop_line": 2790, - "stop_column": 22, + "stop_line": 3036, + "stop_column": 26, "path": "src/documents/tests/test_workflows.py", "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", - "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "name": "bad-argument-type", + "description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `Group | dict[Unknown, Unknown]` is not assignable to parameter `iterable` with type `Iterable[@_]` in function `list.__init__`", "severity": "error" }, { - "line": 2788, + "line": 3035, "column": 29, - "stop_line": 2788, + "stop_line": 3035, "stop_column": 37, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9901,9 +9529,9 @@ "severity": "error" }, { - "line": 2794, + "line": 3041, "column": 21, - "stop_line": 2794, + "stop_line": 3041, "stop_column": 35, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9913,9 +9541,9 @@ "severity": "error" }, { - "line": 2798, + "line": 3045, "column": 26, - "stop_line": 2798, + "stop_line": 3045, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9925,9 +9553,9 @@ "severity": "error" }, { - "line": 2859, + "line": 3106, "column": 13, - "stop_line": 2859, + "stop_line": 3106, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9937,9 +9565,9 @@ "severity": "error" }, { - "line": 2872, + "line": 3119, "column": 35, - "stop_line": 2872, + "stop_line": 3119, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9949,9 +9577,9 @@ "severity": "error" }, { - "line": 2873, + "line": 3120, "column": 35, - "stop_line": 2873, + "stop_line": 3120, "stop_column": 57, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9961,9 +9589,9 @@ "severity": "error" }, { - "line": 2874, + "line": 3121, "column": 34, - "stop_line": 2874, + "stop_line": 3121, "stop_column": 47, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9973,9 +9601,9 @@ "severity": "error" }, { - "line": 2876, + "line": 3123, "column": 35, - "stop_line": 2876, + "stop_line": 3123, "stop_column": 56, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9985,9 +9613,9 @@ "severity": "error" }, { - "line": 2877, + "line": 3124, "column": 35, - "stop_line": 2877, + "stop_line": 3124, "stop_column": 49, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -9997,9 +9625,9 @@ "severity": "error" }, { - "line": 2880, + "line": 3127, "column": 25, - "stop_line": 2880, + "stop_line": 3127, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10009,9 +9637,9 @@ "severity": "error" }, { - "line": 2882, + "line": 3129, "column": 28, - "stop_line": 2882, + "stop_line": 3129, "stop_column": 30, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10021,9 +9649,9 @@ "severity": "error" }, { - "line": 2886, + "line": 3133, "column": 21, - "stop_line": 2888, + "stop_line": 3135, "stop_column": 28, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10033,9 +9661,9 @@ "severity": "error" }, { - "line": 2887, + "line": 3134, "column": 25, - "stop_line": 2887, + "stop_line": 3134, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10045,9 +9673,9 @@ "severity": "error" }, { - "line": 2893, + "line": 3140, "column": 25, - "stop_line": 2893, + "stop_line": 3140, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10057,9 +9685,9 @@ "severity": "error" }, { - "line": 2895, + "line": 3142, "column": 28, - "stop_line": 2895, + "stop_line": 3142, "stop_column": 30, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10069,9 +9697,9 @@ "severity": "error" }, { - "line": 2899, + "line": 3146, "column": 21, - "stop_line": 2901, + "stop_line": 3148, "stop_column": 28, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10081,9 +9709,9 @@ "severity": "error" }, { - "line": 2900, + "line": 3147, "column": 25, - "stop_line": 2900, + "stop_line": 3147, "stop_column": 33, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10093,9 +9721,9 @@ "severity": "error" }, { - "line": 2905, + "line": 3152, "column": 21, - "stop_line": 2905, + "stop_line": 3152, "stop_column": 43, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10105,9 +9733,9 @@ "severity": "error" }, { - "line": 3014, + "line": 3261, "column": 13, - "stop_line": 3014, + "stop_line": 3261, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10117,21 +9745,21 @@ "severity": "error" }, { - "line": 3026, + "line": 3273, "column": 27, - "stop_line": 3026, + "stop_line": 3273, "stop_column": 44, "path": "src/documents/tests/test_workflows.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", - "concise_description": "Argument `str` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "description": "Argument `str | Unknown` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "concise_description": "Argument `str | Unknown` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", "severity": "error" }, { - "line": 3114, + "line": 3361, "column": 13, - "stop_line": 3114, + "stop_line": 3361, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10141,9 +9769,9 @@ "severity": "error" }, { - "line": 3152, + "line": 3399, "column": 13, - "stop_line": 3152, + "stop_line": 3399, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10153,9 +9781,9 @@ "severity": "error" }, { - "line": 3372, + "line": 3619, "column": 13, - "stop_line": 3372, + "stop_line": 3619, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10165,9 +9793,9 @@ "severity": "error" }, { - "line": 3492, + "line": 3739, "column": 13, - "stop_line": 3492, + "stop_line": 3739, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10177,9 +9805,9 @@ "severity": "error" }, { - "line": 3621, + "line": 3868, "column": 23, - "stop_line": 3621, + "stop_line": 3868, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10189,9 +9817,9 @@ "severity": "error" }, { - "line": 3639, + "line": 3886, "column": 23, - "stop_line": 3639, + "stop_line": 3886, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10201,9 +9829,9 @@ "severity": "error" }, { - "line": 3664, + "line": 3911, "column": 27, - "stop_line": 3664, + "stop_line": 3911, "stop_column": 31, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10213,9 +9841,9 @@ "severity": "error" }, { - "line": 3712, + "line": 3959, "column": 13, - "stop_line": 3712, + "stop_line": 3959, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10225,9 +9853,9 @@ "severity": "error" }, { - "line": 3761, + "line": 4008, "column": 23, - "stop_line": 3761, + "stop_line": 4008, "stop_column": 35, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10237,9 +9865,9 @@ "severity": "error" }, { - "line": 3810, + "line": 4057, "column": 23, - "stop_line": 3810, + "stop_line": 4057, "stop_column": 35, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10249,9 +9877,9 @@ "severity": "error" }, { - "line": 3842, + "line": 4089, "column": 23, - "stop_line": 3842, + "stop_line": 4089, "stop_column": 35, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10261,9 +9889,45 @@ "severity": "error" }, { - "line": 3939, + "line": 4302, + "column": 13, + "stop_line": 4302, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 4494, + "column": 13, + "stop_line": 4494, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 4558, + "column": 13, + "stop_line": 4558, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 4607, "column": 19, - "stop_line": 3939, + "stop_line": 4607, "stop_column": 23, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10273,9 +9937,9 @@ "severity": "error" }, { - "line": 3942, + "line": 4610, "column": 16, - "stop_line": 3942, + "stop_line": 4610, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10285,9 +9949,9 @@ "severity": "error" }, { - "line": 3952, + "line": 4620, "column": 19, - "stop_line": 3952, + "stop_line": 4620, "stop_column": 23, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10297,9 +9961,9 @@ "severity": "error" }, { - "line": 3955, + "line": 4623, "column": 16, - "stop_line": 3955, + "stop_line": 4623, "stop_column": 48, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10309,9 +9973,9 @@ "severity": "error" }, { - "line": 3988, + "line": 4660, "column": 23, - "stop_line": 3988, + "stop_line": 4660, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10321,9 +9985,9 @@ "severity": "error" }, { - "line": 3997, + "line": 4669, "column": 23, - "stop_line": 3997, + "stop_line": 4669, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10333,9 +9997,9 @@ "severity": "error" }, { - "line": 4016, + "line": 4688, "column": 23, - "stop_line": 4016, + "stop_line": 4688, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10345,9 +10009,9 @@ "severity": "error" }, { - "line": 4043, + "line": 4715, "column": 23, - "stop_line": 4043, + "stop_line": 4715, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10357,9 +10021,9 @@ "severity": "error" }, { - "line": 4067, + "line": 4739, "column": 19, - "stop_line": 4067, + "stop_line": 4739, "stop_column": 23, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10369,9 +10033,9 @@ "severity": "error" }, { - "line": 4072, + "line": 4744, "column": 16, - "stop_line": 4072, + "stop_line": 4744, "stop_column": 23, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10381,9 +10045,9 @@ "severity": "error" }, { - "line": 4073, + "line": 4745, "column": 16, - "stop_line": 4073, + "stop_line": 4745, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10393,9 +10057,9 @@ "severity": "error" }, { - "line": 4097, + "line": 4769, "column": 23, - "stop_line": 4097, + "stop_line": 4769, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10405,9 +10069,9 @@ "severity": "error" }, { - "line": 4123, + "line": 4795, "column": 19, - "stop_line": 4123, + "stop_line": 4795, "stop_column": 23, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10417,9 +10081,9 @@ "severity": "error" }, { - "line": 4128, + "line": 4800, "column": 16, - "stop_line": 4128, + "stop_line": 4800, "stop_column": 27, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10429,9 +10093,9 @@ "severity": "error" }, { - "line": 4129, + "line": 4801, "column": 35, - "stop_line": 4129, + "stop_line": 4801, "stop_column": 46, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10441,9 +10105,9 @@ "severity": "error" }, { - "line": 4364, + "line": 5037, "column": 20, - "stop_line": 4364, + "stop_line": 5037, "stop_column": 34, "path": "src/documents/tests/test_workflows.py", "code": -2, @@ -10741,21 +10405,9 @@ "severity": "error" }, { - "line": 88, - "column": 12, - "stop_line": 88, - "stop_column": 16, - "path": "src/documents/tests/utils.py", - "code": -2, - "name": "redundant-condition", - "description": "Class name `dirs` used as condition. It's equivalent to `True`", - "concise_description": "Class name `dirs` used as condition. It's equivalent to `True`", - "severity": "error" - }, - { - "line": 161, + "line": 164, "column": 9, - "stop_line": 161, + "stop_line": 164, "stop_column": 22, "path": "src/documents/tests/utils.py", "code": -2, @@ -10765,9 +10417,9 @@ "severity": "error" }, { - "line": 164, + "line": 169, "column": 9, - "stop_line": 164, + "stop_line": 169, "stop_column": 25, "path": "src/documents/tests/utils.py", "code": -2, @@ -10776,30 +10428,6 @@ "concise_description": "Object of class `object` has no attribute `tearDown`", "severity": "error" }, - { - "line": 174, - "column": 9, - "stop_line": 174, - "stop_column": 24, - "path": "src/documents/tests/utils.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", - "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", - "severity": "error" - }, - { - "line": 177, - "column": 9, - "stop_line": 177, - "stop_column": 25, - "path": "src/documents/tests/utils.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertFalse`", - "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertFalse`", - "severity": "error" - }, { "line": 180, "column": 9, @@ -10825,21 +10453,9 @@ "severity": "error" }, { - "line": 197, + "line": 186, "column": 9, - "stop_line": 197, - "stop_column": 25, - "path": "src/documents/tests/utils.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertEqual`", - "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertEqual`", - "severity": "error" - }, - { - "line": 201, - "column": 9, - "stop_line": 201, + "stop_line": 186, "stop_column": 24, "path": "src/documents/tests/utils.py", "code": -2, @@ -10848,6 +10464,18 @@ "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", "severity": "error" }, + { + "line": 189, + "column": 9, + "stop_line": 189, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertFalse`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertFalse`", + "severity": "error" + }, { "line": 203, "column": 9, @@ -10861,9 +10489,33 @@ "severity": "error" }, { - "line": 221, + "line": 207, "column": 9, - "stop_line": 221, + "stop_line": 207, + "stop_column": 24, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", + "severity": "error" + }, + { + "line": 209, + "column": 9, + "stop_line": 209, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertEqual`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertEqual`", + "severity": "error" + }, + { + "line": 227, + "column": 9, + "stop_line": 227, "stop_column": 22, "path": "src/documents/tests/utils.py", "code": -2, @@ -10873,9 +10525,9 @@ "severity": "error" }, { - "line": 224, + "line": 230, "column": 9, - "stop_line": 224, + "stop_line": 230, "stop_column": 25, "path": "src/documents/tests/utils.py", "code": -2, @@ -10885,9 +10537,9 @@ "severity": "error" }, { - "line": 237, + "line": 243, "column": 9, - "stop_line": 237, + "stop_line": 243, "stop_column": 22, "path": "src/documents/tests/utils.py", "code": -2, @@ -10897,9 +10549,9 @@ "severity": "error" }, { - "line": 240, + "line": 246, "column": 9, - "stop_line": 240, + "stop_line": 246, "stop_column": 25, "path": "src/documents/tests/utils.py", "code": -2, @@ -10909,9 +10561,9 @@ "severity": "error" }, { - "line": 290, + "line": 296, "column": 16, - "stop_line": 290, + "stop_line": 296, "stop_column": 74, "path": "src/documents/tests/utils.py", "code": -2, @@ -10921,9 +10573,9 @@ "severity": "error" }, { - "line": 371, + "line": 377, "column": 13, - "stop_line": 371, + "stop_line": 377, "stop_column": 22, "path": "src/documents/tests/utils.py", "code": -2, @@ -10933,9 +10585,9 @@ "severity": "error" }, { - "line": 379, + "line": 385, "column": 13, - "stop_line": 379, + "stop_line": 385, "stop_column": 22, "path": "src/documents/tests/utils.py", "code": -2, @@ -10945,9 +10597,9 @@ "severity": "error" }, { - "line": 387, + "line": 393, "column": 13, - "stop_line": 387, + "stop_line": 393, "stop_column": 22, "path": "src/documents/tests/utils.py", "code": -2, @@ -10957,9 +10609,9 @@ "severity": "error" }, { - "line": 72, + "line": 86, "column": 34, - "stop_line": 72, + "stop_line": 86, "stop_column": 45, "path": "src/documents/utils.py", "code": -2, @@ -10969,9 +10621,9 @@ "severity": "error" }, { - "line": 251, + "line": 277, "column": 31, - "stop_line": 251, + "stop_line": 277, "stop_column": 57, "path": "src/documents/views.py", "code": -2, @@ -10981,9 +10633,9 @@ "severity": "error" }, { - "line": 252, + "line": 278, "column": 32, - "stop_line": 252, + "stop_line": 278, "stop_column": 63, "path": "src/documents/views.py", "code": -2, @@ -10993,9 +10645,9 @@ "severity": "error" }, { - "line": 302, + "line": 333, "column": 17, - "stop_line": 302, + "stop_line": 333, "stop_column": 30, "path": "src/documents/views.py", "code": -2, @@ -11005,9 +10657,9 @@ "severity": "error" }, { - "line": 334, + "line": 365, "column": 19, - "stop_line": 334, + "stop_line": 365, "stop_column": 49, "path": "src/documents/views.py", "code": -2, @@ -11017,9 +10669,9 @@ "severity": "error" }, { - "line": 337, + "line": 368, "column": 21, - "stop_line": 337, + "stop_line": 368, "stop_column": 33, "path": "src/documents/views.py", "code": -2, @@ -11029,9 +10681,9 @@ "severity": "error" }, { - "line": 352, + "line": 383, "column": 24, - "stop_line": 352, + "stop_line": 383, "stop_column": 44, "path": "src/documents/views.py", "code": -2, @@ -11041,9 +10693,9 @@ "severity": "error" }, { - "line": 352, + "line": 383, "column": 45, - "stop_line": 352, + "stop_line": 383, "stop_column": 62, "path": "src/documents/views.py", "code": -2, @@ -11053,9 +10705,9 @@ "severity": "error" }, { - "line": 354, + "line": 385, "column": 22, - "stop_line": 354, + "stop_line": 385, "stop_column": 35, "path": "src/documents/views.py", "code": -2, @@ -11065,9 +10717,9 @@ "severity": "error" }, { - "line": 429, + "line": 487, "column": 29, - "stop_line": 429, + "stop_line": 487, "stop_column": 51, "path": "src/documents/views.py", "code": -2, @@ -11077,9 +10729,9 @@ "severity": "error" }, { - "line": 435, + "line": 493, "column": 25, - "stop_line": 435, + "stop_line": 493, "stop_column": 47, "path": "src/documents/views.py", "code": -2, @@ -11089,21 +10741,9 @@ "severity": "error" }, { - "line": 450, - "column": 15, - "stop_line": 450, - "stop_column": 37, - "path": "src/documents/views.py", - "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", - "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", - "severity": "error" - }, - { - "line": 498, + "line": 557, "column": 13, - "stop_line": 498, + "stop_line": 557, "stop_column": 65, "path": "src/documents/views.py", "code": -2, @@ -11113,33 +10753,93 @@ "severity": "error" }, { - "line": 819, + "line": 887, + "column": 48, + "stop_line": 887, + "stop_column": 64, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Correspondent` has no attribute `document_count`", + "concise_description": "Object of class `Correspondent` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 890, + "column": 48, + "stop_line": 890, + "stop_column": 64, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Tag` has no attribute `document_count`", + "concise_description": "Object of class `Tag` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 893, + "column": 48, + "stop_line": 893, + "stop_column": 64, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `DocumentType` has no attribute `document_count`", + "concise_description": "Object of class `DocumentType` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 896, + "column": 48, + "stop_line": 896, + "stop_column": 64, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `StoragePath` has no attribute `document_count`", + "concise_description": "Object of class `StoragePath` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 899, + "column": 48, + "stop_line": 899, + "stop_column": 64, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `CustomField` has no attribute `document_count`", + "concise_description": "Object of class `CustomField` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 1069, "column": 9, - "stop_line": 819, + "stop_line": 1069, "stop_column": 16, "path": "src/documents/views.py", "code": -2, "name": "bad-override", - "description": "Class member `DocumentViewSet.destroy` overrides parent class `DestroyModelMixin` in an inconsistent manner\n `DocumentViewSet.destroy` has type `BoundMethod[DocumentViewSet, (self: DocumentViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response]`, which is not assignable to `BoundMethod[DocumentViewSet, (self: DocumentViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `DestroyModelMixin.destroy`", + "description": "Class member `DocumentViewSet.destroy` overrides parent class `DestroyModelMixin` in an inconsistent manner\n `DocumentViewSet.destroy` has type `(self: DocumentViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response`, which is not assignable to `(self: DocumentViewSet, request: Request, *args: Any, **kwargs: Any) -> Response`, the type of `DestroyModelMixin.destroy`\n Signature mismatch:\n ...umentViewSet, request: Request, *args: Any, **kwargs: Any) -> Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ return type\n |\n parameters\n ...umentViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ return type\n |\n parameters", "concise_description": "Class member `DocumentViewSet.destroy` overrides parent class `DestroyModelMixin` in an inconsistent manner", "severity": "error" }, { - "line": 916, + "line": 1223, "column": 37, - "stop_line": 916, + "stop_line": 1223, "stop_column": 54, "path": "src/documents/views.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `list[Unknown] | None` is not assignable to parameter `original_metadata` with type `list[Unknown]` in function `documents.caching.set_metadata_cache`", - "concise_description": "Argument `list[Unknown] | None` is not assignable to parameter `original_metadata` with type `list[Unknown]` in function `documents.caching.set_metadata_cache`", + "description": "Argument `list[MetadataEntry] | list[Unknown] | None` is not assignable to parameter `original_metadata` with type `list[Unknown]` in function `documents.caching.set_metadata_cache`", + "concise_description": "Argument `list[MetadataEntry] | list[Unknown] | None` is not assignable to parameter `original_metadata` with type `list[Unknown]` in function `documents.caching.set_metadata_cache`", "severity": "error" }, { - "line": 1027, + "line": 1334, "column": 45, - "stop_line": 1027, + "stop_line": 1334, "stop_column": 57, "path": "src/documents/views.py", "code": -2, @@ -11149,9 +10849,9 @@ "severity": "error" }, { - "line": 1040, + "line": 1347, "column": 61, - "stop_line": 1040, + "stop_line": 1347, "stop_column": 71, "path": "src/documents/views.py", "code": -2, @@ -11161,9 +10861,9 @@ "severity": "error" }, { - "line": 1042, + "line": 1349, "column": 56, - "stop_line": 1042, + "stop_line": 1349, "stop_column": 66, "path": "src/documents/views.py", "code": -2, @@ -11173,9 +10873,9 @@ "severity": "error" }, { - "line": 1044, + "line": 1351, "column": 63, - "stop_line": 1044, + "stop_line": 1351, "stop_column": 73, "path": "src/documents/views.py", "code": -2, @@ -11185,9 +10885,9 @@ "severity": "error" }, { - "line": 1047, + "line": 1354, "column": 62, - "stop_line": 1047, + "stop_line": 1354, "stop_column": 72, "path": "src/documents/views.py", "code": -2, @@ -11197,9 +10897,9 @@ "severity": "error" }, { - "line": 1151, + "line": 1468, "column": 21, - "stop_line": 1151, + "stop_line": 1468, "stop_column": 48, "path": "src/documents/views.py", "code": -2, @@ -11209,9 +10909,9 @@ "severity": "error" }, { - "line": 1186, + "line": 1503, "column": 17, - "stop_line": 1186, + "stop_line": 1503, "stop_column": 44, "path": "src/documents/views.py", "code": -2, @@ -11221,9 +10921,9 @@ "severity": "error" }, { - "line": 1213, + "line": 1530, "column": 5, - "stop_line": 1213, + "stop_line": 1530, "stop_column": 62, "path": "src/documents/views.py", "code": -2, @@ -11233,9 +10933,9 @@ "severity": "error" }, { - "line": 1270, + "line": 1587, "column": 26, - "stop_line": 1270, + "stop_line": 1587, "stop_column": 57, "path": "src/documents/views.py", "code": -2, @@ -11245,9 +10945,9 @@ "severity": "error" }, { - "line": 1276, + "line": 1593, "column": 22, - "stop_line": 1276, + "stop_line": 1593, "stop_column": 54, "path": "src/documents/views.py", "code": -2, @@ -11257,9 +10957,9 @@ "severity": "error" }, { - "line": 1277, + "line": 1594, "column": 13, - "stop_line": 1277, + "stop_line": 1594, "stop_column": 30, "path": "src/documents/views.py", "code": -2, @@ -11269,9 +10969,9 @@ "severity": "error" }, { - "line": 1311, + "line": 1632, "column": 36, - "stop_line": 1311, + "stop_line": 1632, "stop_column": 64, "path": "src/documents/views.py", "code": -2, @@ -11281,9 +10981,9 @@ "severity": "error" }, { - "line": 1351, + "line": 1672, "column": 30, - "stop_line": 1351, + "stop_line": 1672, "stop_column": 45, "path": "src/documents/views.py", "code": -2, @@ -11293,81 +10993,69 @@ "severity": "error" }, { - "line": 1424, + "line": 1841, + "column": 13, + "stop_line": 1841, + "stop_column": 40, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `log_create`", + "concise_description": "Object of class `Manager` has no attribute `log_create`", + "severity": "error" + }, + { + "line": 1920, + "column": 13, + "stop_line": 1920, + "stop_column": 40, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `log_create`", + "concise_description": "Object of class `Manager` has no attribute `log_create`", + "severity": "error" + }, + { + "line": 1996, "column": 70, - "stop_line": 1424, + "stop_line": 1996, "stop_column": 79, "path": "src/documents/views.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `QuerySet[Unknown, Unknown] | list[Document]` is not assignable to parameter `documents` with type `list[Document]` in function `paperless_ai.chat.stream_chat_with_documents`", - "concise_description": "Argument `QuerySet[Unknown, Unknown] | list[Document]` is not assignable to parameter `documents` with type `list[Document]` in function `paperless_ai.chat.stream_chat_with_documents`", + "description": "Argument `QuerySet[Unknown] | list[Document]` is not assignable to parameter `documents` with type `list[Document]` in function `paperless_ai.chat.stream_chat_with_documents`", + "concise_description": "Argument `QuerySet[Unknown] | list[Document]` is not assignable to parameter `documents` with type `list[Document]` in function `paperless_ai.chat.stream_chat_with_documents`", "severity": "error" }, { - "line": 1480, + "line": 2065, "column": 9, - "stop_line": 1480, - "stop_column": 24, - "path": "src/documents/views.py", - "code": -2, - "name": "bad-override", - "description": "Class member `UnifiedSearchViewSet.filter_queryset` overrides parent class `DocumentViewSet` in an inconsistent manner\n `UnifiedSearchViewSet.filter_queryset` has type `BoundMethod[UnifiedSearchViewSet, (self: UnifiedSearchViewSet, queryset: Unknown) -> DelayedFullTextQuery | DelayedMoreLikeThisQuery | QuerySet[Unknown, Unknown]]`, which is not assignable to `BoundMethod[UnifiedSearchViewSet, (self: UnifiedSearchViewSet, queryset: QuerySet[Unknown, Unknown]) -> QuerySet[Unknown, Unknown]]`, the type of `DocumentViewSet.filter_queryset`", - "concise_description": "Class member `UnifiedSearchViewSet.filter_queryset` overrides parent class `DocumentViewSet` in an inconsistent manner", - "severity": "error" - }, - { - "line": 1494, - "column": 17, - "stop_line": 1494, - "stop_column": 30, - "path": "src/documents/views.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `searcher` with type `Searcher` in function `documents.index.DelayedQuery.__init__`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `searcher` with type `Searcher` in function `documents.index.DelayedQuery.__init__`", - "severity": "error" - }, - { - "line": 1496, - "column": 17, - "stop_line": 1496, - "stop_column": 45, - "path": "src/documents/views.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `BasePagination` has no attribute `get_page_size`\nObject of class `NoneType` has no attribute `get_page_size`", - "concise_description": "Object of class `BasePagination` has no attribute `get_page_size`\nObject of class `NoneType` has no attribute `get_page_size`", - "severity": "error" - }, - { - "line": 1502, - "column": 9, - "stop_line": 1502, + "stop_line": 2065, "stop_column": 13, "path": "src/documents/views.py", "code": -2, "name": "bad-override", - "description": "Class member `UnifiedSearchViewSet.list` overrides parent class `DocumentViewSet` in an inconsistent manner\n `UnifiedSearchViewSet.list` has type `BoundMethod[UnifiedSearchViewSet, (self: UnifiedSearchViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response]`, which is not assignable to `BoundMethod[UnifiedSearchViewSet, (self: UnifiedSearchViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `DocumentViewSet.list`", + "description": "Class member `UnifiedSearchViewSet.list` overrides parent class `DocumentViewSet` in an inconsistent manner\n `UnifiedSearchViewSet.list` has type `(self: UnifiedSearchViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | HttpResponseForbidden | Response`, which is not assignable to `(self: UnifiedSearchViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> Response`, the type of `DocumentViewSet.list`\n Signature mismatch:\n ...s: Unknown, **kwargs: Unknown) -> Response: ...\n ^ return type\n ...s: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | HttpResponseForbidden | Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return type", "concise_description": "Class member `UnifiedSearchViewSet.list` overrides parent class `DocumentViewSet` in an inconsistent manner", "severity": "error" }, { - "line": 1510, - "column": 51, - "stop_line": 1510, - "stop_column": 59, + "line": 2157, + "column": 43, + "stop_line": 2157, + "stop_column": 45, "path": "src/documents/views.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `DelayedFullTextQuery | DelayedMoreLikeThisQuery | QuerySet[Unknown, Unknown]` is not assignable to parameter `queryset` with type `QuerySet[Unknown, Unknown] | Sequence[Any]` in function `rest_framework.generics.GenericAPIView.paginate_queryset`", - "concise_description": "Argument `DelayedFullTextQuery | DelayedMoreLikeThisQuery | QuerySet[Unknown, Unknown]` is not assignable to parameter `queryset` with type `QuerySet[Unknown, Unknown] | Sequence[Any]` in function `rest_framework.generics.GenericAPIView.paginate_queryset`", + "description": "Argument `TantivyRelevanceList` is not assignable to parameter `queryset` with type `QuerySet[Any, @_]` in function `rest_framework.generics.GenericAPIView.paginate_queryset`", + "concise_description": "Argument `TantivyRelevanceList` is not assignable to parameter `queryset` with type `QuerySet[Any, @_]` in function `rest_framework.generics.GenericAPIView.paginate_queryset`", "severity": "error" }, { - "line": 1539, + "line": 2199, "column": 25, - "stop_line": 1539, + "stop_line": 2199, "stop_column": 36, "path": "src/documents/views.py", "code": -2, @@ -11377,57 +11065,57 @@ "severity": "error" }, { - "line": 1704, - "column": 16, - "stop_line": 1704, - "stop_column": 33, + "line": 2427, + "column": 18, + "stop_line": 2427, + "stop_column": 35, "path": "src/documents/views.py", "code": -2, - "name": "missing-attribute", - "description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", - "concise_description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "name": "bad-argument-type", + "description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User` in function `DocumentSelectionMixin._resolve_document_ids`", + "concise_description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User` in function `DocumentSelectionMixin._resolve_document_ids`", "severity": "error" }, { - "line": 1713, - "column": 25, - "stop_line": 1713, - "stop_column": 38, + "line": 2441, + "column": 18, + "stop_line": 2441, + "stop_column": 22, "path": "src/documents/views.py", "code": -2, - "name": "missing-attribute", - "description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", - "concise_description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "name": "bad-argument-type", + "description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User` in function `DocumentOperationPermissionMixin._has_document_permissions`", + "concise_description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User` in function `DocumentOperationPermissionMixin._has_document_permissions`", "severity": "error" }, { - "line": 1750, - "column": 25, - "stop_line": 1750, - "stop_column": 38, + "line": 2523, + "column": 18, + "stop_line": 2523, + "stop_column": 22, "path": "src/documents/views.py", "code": -2, - "name": "missing-attribute", - "description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", - "concise_description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "name": "bad-argument-type", + "description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User` in function `DocumentSelectionMixin._resolve_document_ids`", + "concise_description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User` in function `DocumentSelectionMixin._resolve_document_ids`", "severity": "error" }, { - "line": 1764, - "column": 25, - "stop_line": 1764, - "stop_column": 38, + "line": 2529, + "column": 18, + "stop_line": 2529, + "stop_column": 22, "path": "src/documents/views.py", "code": -2, - "name": "missing-attribute", - "description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", - "concise_description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "name": "bad-argument-type", + "description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User` in function `DocumentOperationPermissionMixin._has_document_permissions`", + "concise_description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User` in function `DocumentOperationPermissionMixin._has_document_permissions`", "severity": "error" }, { - "line": 1793, + "line": 2558, "column": 33, - "stop_line": 1793, + "stop_line": 2558, "stop_column": 46, "path": "src/documents/views.py", "code": -2, @@ -11437,9 +11125,9 @@ "severity": "error" }, { - "line": 1803, + "line": 2568, "column": 21, - "stop_line": 1803, + "stop_line": 2568, "stop_column": 48, "path": "src/documents/views.py", "code": -2, @@ -11449,9 +11137,9 @@ "severity": "error" }, { - "line": 2009, + "line": 2943, "column": 52, - "stop_line": 2009, + "stop_line": 2943, "stop_column": 68, "path": "src/documents/views.py", "code": -2, @@ -11461,9 +11149,9 @@ "severity": "error" }, { - "line": 2013, + "line": 2947, "column": 52, - "stop_line": 2013, + "stop_line": 2947, "stop_column": 68, "path": "src/documents/views.py", "code": -2, @@ -11473,9 +11161,9 @@ "severity": "error" }, { - "line": 2016, + "line": 2950, "column": 52, - "stop_line": 2016, + "stop_line": 2950, "stop_column": 68, "path": "src/documents/views.py", "code": -2, @@ -11485,9 +11173,9 @@ "severity": "error" }, { - "line": 2019, + "line": 2953, "column": 52, - "stop_line": 2019, + "stop_line": 2953, "stop_column": 68, "path": "src/documents/views.py", "code": -2, @@ -11497,9 +11185,9 @@ "severity": "error" }, { - "line": 2023, + "line": 2957, "column": 52, - "stop_line": 2023, + "stop_line": 2957, "stop_column": 68, "path": "src/documents/views.py", "code": -2, @@ -11509,21 +11197,45 @@ "severity": "error" }, { - "line": 2083, - "column": 17, - "stop_line": 2083, - "stop_column": 21, + "line": 3010, + "column": 65, + "stop_line": 3010, + "stop_column": 69, "path": "src/documents/views.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `AbstractBaseUser | AnonymousUser | None` is not assignable to parameter `user` with type `User | None` in function `documents.index.autocomplete`", - "concise_description": "Argument `AbstractBaseUser | AnonymousUser | None` is not assignable to parameter `user` with type `User | None` in function `documents.index.autocomplete`", + "description": "Argument `AbstractBaseUser | AnonymousUser | None` is not assignable to parameter `user` with type `AbstractBaseUser | None` in function `documents.search._backend.TantivyBackend.autocomplete`", + "concise_description": "Argument `AbstractBaseUser | AnonymousUser | None` is not assignable to parameter `user` with type `AbstractBaseUser | None` in function `documents.search._backend.TantivyBackend.autocomplete`", "severity": "error" }, { - "line": 3051, + "line": 3730, + "column": 32, + "stop_line": 3730, + "stop_column": 43, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `iter_wrapper` with type `(Iterable[Document]) -> Iterable[Document]` in function `celery.app.task.Task.__call__`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `iter_wrapper` with type `(Iterable[Document]) -> Iterable[Document]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 3730, + "column": 32, + "stop_line": 3730, + "stop_column": 43, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `status_callback` with type `((str) -> None) | None` in function `celery.app.task.Task.__call__`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `status_callback` with type `((str) -> None) | None` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 4022, "column": 24, - "stop_line": 3051, + "stop_line": 4022, "stop_column": 51, "path": "src/documents/views.py", "code": -2, @@ -11533,9 +11245,21 @@ "severity": "error" }, { - "line": 3056, + "line": 4041, + "column": 17, + "stop_line": 4041, + "stop_column": 21, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User | None` in function `documents.permissions.get_objects_for_user_owner_aware`", + "concise_description": "Argument `AbstractBaseUser | AnonymousUser` is not assignable to parameter `user` with type `User | None` in function `documents.permissions.get_objects_for_user_owner_aware`", + "severity": "error" + }, + { + "line": 4066, "column": 16, - "stop_line": 3056, + "stop_line": 4066, "stop_column": 33, "path": "src/documents/views.py", "code": -2, @@ -11545,9 +11269,9 @@ "severity": "error" }, { - "line": 3063, + "line": 4068, "column": 25, - "stop_line": 3063, + "stop_line": 4068, "stop_column": 38, "path": "src/documents/views.py", "code": -2, @@ -11557,45 +11281,33 @@ "severity": "error" }, { - "line": 3118, + "line": 4123, "column": 9, - "stop_line": 3118, + "stop_line": 4123, "stop_column": 23, "path": "src/documents/views.py", "code": -2, "name": "bad-override", - "description": "Class member `WorkflowTriggerViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner\n `WorkflowTriggerViewSet.partial_update` has type `BoundMethod[WorkflowTriggerViewSet, (self: WorkflowTriggerViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response]`, which is not assignable to `BoundMethod[WorkflowTriggerViewSet, (self: WorkflowTriggerViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `ModelViewSet.partial_update`", + "description": "Class member `WorkflowTriggerViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner\n `WorkflowTriggerViewSet.partial_update` has type `(self: WorkflowTriggerViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response`, which is not assignable to `(self: WorkflowTriggerViewSet, request: Request, *args: Any, **kwargs: Any) -> Response`, the type of `ModelViewSet.partial_update`\n Signature mismatch:\n ...iggerViewSet, request: Request, *args: Any, **kwargs: Any) -> Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ return type\n |\n parameters\n ...iggerViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ return type\n |\n parameters", "concise_description": "Class member `WorkflowTriggerViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner", "severity": "error" }, { - "line": 3143, + "line": 4148, "column": 9, - "stop_line": 3143, + "stop_line": 4148, "stop_column": 23, "path": "src/documents/views.py", "code": -2, "name": "bad-override", - "description": "Class member `WorkflowActionViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner\n `WorkflowActionViewSet.partial_update` has type `BoundMethod[WorkflowActionViewSet, (self: WorkflowActionViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response]`, which is not assignable to `BoundMethod[WorkflowActionViewSet, (self: WorkflowActionViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `ModelViewSet.partial_update`", + "description": "Class member `WorkflowActionViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner\n `WorkflowActionViewSet.partial_update` has type `(self: WorkflowActionViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response`, which is not assignable to `(self: WorkflowActionViewSet, request: Request, *args: Any, **kwargs: Any) -> Response`, the type of `ModelViewSet.partial_update`\n Signature mismatch:\n ...ctionViewSet, request: Request, *args: Any, **kwargs: Any) -> Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ return type\n |\n parameters\n ...ctionViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ return type\n |\n parameters", "concise_description": "Class member `WorkflowActionViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner", "severity": "error" }, { - "line": 3187, - "column": 45, - "stop_line": 3187, - "stop_column": 75, - "path": "src/documents/views.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", - "concise_description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", - "severity": "error" - }, - { - "line": 3343, + "line": 4324, "column": 36, - "stop_line": 3343, + "stop_line": 4324, "stop_column": 52, "path": "src/documents/views.py", "code": -2, @@ -11605,9 +11317,9 @@ "severity": "error" }, { - "line": 3344, + "line": 4325, "column": 33, - "stop_line": 3344, + "stop_line": 4325, "stop_column": 56, "path": "src/documents/views.py", "code": -2, @@ -11617,9 +11329,9 @@ "severity": "error" }, { - "line": 3459, + "line": 4446, "column": 40, - "stop_line": 3459, + "stop_line": 4446, "stop_column": 54, "path": "src/documents/views.py", "code": -2, @@ -11629,9 +11341,9 @@ "severity": "error" }, { - "line": 3467, + "line": 4454, "column": 38, - "stop_line": 3467, + "stop_line": 4454, "stop_column": 51, "path": "src/documents/views.py", "code": -2, @@ -11641,9 +11353,9 @@ "severity": "error" }, { - "line": 3531, + "line": 4523, "column": 16, - "stop_line": 3531, + "stop_line": 4523, "stop_column": 31, "path": "src/documents/views.py", "code": -2, @@ -11653,9 +11365,9 @@ "severity": "error" }, { - "line": 36, + "line": 38, "column": 22, - "stop_line": 36, + "stop_line": 38, "stop_column": 36, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11665,9 +11377,9 @@ "severity": "error" }, { - "line": 37, + "line": 39, "column": 80, - "stop_line": 37, + "stop_line": 39, "stop_column": 91, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11677,9 +11389,9 @@ "severity": "error" }, { - "line": 38, + "line": 40, "column": 30, - "stop_line": 38, + "stop_line": 40, "stop_column": 57, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11689,9 +11401,9 @@ "severity": "error" }, { - "line": 39, + "line": 41, "column": 16, - "stop_line": 39, + "stop_line": 41, "stop_column": 38, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11701,9 +11413,9 @@ "severity": "error" }, { - "line": 41, + "line": 43, "column": 30, - "stop_line": 41, + "stop_line": 43, "stop_column": 57, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11713,9 +11425,9 @@ "severity": "error" }, { - "line": 42, + "line": 44, "column": 16, - "stop_line": 42, + "stop_line": 44, "stop_column": 38, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11725,9 +11437,9 @@ "severity": "error" }, { - "line": 44, + "line": 46, "column": 31, - "stop_line": 44, + "stop_line": 46, "stop_column": 54, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11737,9 +11449,9 @@ "severity": "error" }, { - "line": 44, + "line": 46, "column": 58, - "stop_line": 44, + "stop_line": 46, "stop_column": 72, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11749,9 +11461,9 @@ "severity": "error" }, { - "line": 45, + "line": 47, "column": 25, - "stop_line": 45, + "stop_line": 47, "stop_column": 51, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11761,9 +11473,9 @@ "severity": "error" }, { - "line": 46, + "line": 48, "column": 33, - "stop_line": 46, + "stop_line": 48, "stop_column": 50, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11773,9 +11485,9 @@ "severity": "error" }, { - "line": 47, + "line": 49, "column": 41, - "stop_line": 47, + "stop_line": 49, "stop_column": 55, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11785,9 +11497,9 @@ "severity": "error" }, { - "line": 48, + "line": 50, "column": 24, - "stop_line": 48, + "stop_line": 50, "stop_column": 40, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11797,9 +11509,9 @@ "severity": "error" }, { - "line": 49, + "line": 51, "column": 19, - "stop_line": 49, + "stop_line": 51, "stop_column": 30, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11809,9 +11521,9 @@ "severity": "error" }, { - "line": 68, + "line": 70, "column": 42, - "stop_line": 68, + "stop_line": 70, "stop_column": 64, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11821,9 +11533,9 @@ "severity": "error" }, { - "line": 106, + "line": 108, "column": 13, - "stop_line": 106, + "stop_line": 108, "stop_column": 33, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11833,9 +11545,9 @@ "severity": "error" }, { - "line": 118, + "line": 120, "column": 12, - "stop_line": 118, + "stop_line": 120, "stop_column": 32, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11845,9 +11557,9 @@ "severity": "error" }, { - "line": 123, + "line": 125, "column": 13, - "stop_line": 123, + "stop_line": 125, "stop_column": 30, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11857,9 +11569,9 @@ "severity": "error" }, { - "line": 135, + "line": 137, "column": 12, - "stop_line": 135, + "stop_line": 137, "stop_column": 29, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11869,9 +11581,9 @@ "severity": "error" }, { - "line": 141, + "line": 143, "column": 12, - "stop_line": 141, + "stop_line": 143, "stop_column": 41, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11881,9 +11593,9 @@ "severity": "error" }, { - "line": 174, + "line": 176, "column": 16, - "stop_line": 174, + "stop_line": 176, "stop_column": 31, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11893,9 +11605,9 @@ "severity": "error" }, { - "line": 178, + "line": 180, "column": 59, - "stop_line": 178, + "stop_line": 180, "stop_column": 74, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11905,9 +11617,9 @@ "severity": "error" }, { - "line": 197, + "line": 199, "column": 12, - "stop_line": 197, + "stop_line": 199, "stop_column": 37, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11917,9 +11629,9 @@ "severity": "error" }, { - "line": 198, + "line": 200, "column": 16, - "stop_line": 198, + "stop_line": 200, "stop_column": 37, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11929,9 +11641,9 @@ "severity": "error" }, { - "line": 200, + "line": 202, "column": 39, - "stop_line": 200, + "stop_line": 202, "stop_column": 66, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11941,9 +11653,9 @@ "severity": "error" }, { - "line": 219, + "line": 221, "column": 14, - "stop_line": 219, + "stop_line": 221, "stop_column": 33, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11953,9 +11665,9 @@ "severity": "error" }, { - "line": 221, + "line": 223, "column": 17, - "stop_line": 221, + "stop_line": 223, "stop_column": 36, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11965,9 +11677,9 @@ "severity": "error" }, { - "line": 234, + "line": 236, "column": 12, - "stop_line": 234, + "stop_line": 236, "stop_column": 34, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11977,9 +11689,9 @@ "severity": "error" }, { - "line": 236, + "line": 238, "column": 55, - "stop_line": 236, + "stop_line": 238, "stop_column": 83, "path": "src/documents/workflows/actions.py", "code": -2, @@ -11989,9 +11701,9 @@ "severity": "error" }, { - "line": 243, + "line": 245, "column": 12, - "stop_line": 243, + "stop_line": 245, "stop_column": 43, "path": "src/documents/workflows/actions.py", "code": -2, @@ -12001,9 +11713,9 @@ "severity": "error" }, { - "line": 255, + "line": 257, "column": 17, - "stop_line": 255, + "stop_line": 257, "stop_column": 35, "path": "src/documents/workflows/actions.py", "code": -2, @@ -12013,9 +11725,9 @@ "severity": "error" }, { - "line": 258, + "line": 260, "column": 19, - "stop_line": 258, + "stop_line": 260, "stop_column": 24, "path": "src/documents/workflows/actions.py", "code": -2, @@ -12025,9 +11737,9 @@ "severity": "error" }, { - "line": 259, + "line": 261, "column": 21, - "stop_line": 259, + "stop_line": 261, "stop_column": 43, "path": "src/documents/workflows/actions.py", "code": -2, @@ -12037,9 +11749,9 @@ "severity": "error" }, { - "line": 262, + "line": 264, "column": 27, - "stop_line": 262, + "stop_line": 264, "stop_column": 45, "path": "src/documents/workflows/actions.py", "code": -2, @@ -12049,9 +11761,9 @@ "severity": "error" }, { - "line": 298, + "line": 300, "column": 43, - "stop_line": 298, + "stop_line": 300, "stop_column": 65, "path": "src/documents/workflows/actions.py", "code": -2, @@ -12384,30 +12096,6 @@ "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_custom_fields`", "severity": "error" }, - { - "line": 53, - "column": 48, - "stop_line": 53, - "stop_column": 54, - "path": "src/documents/workflows/webhooks.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `int | str` is not assignable to parameter `ip` with type `str` in function `WebhookTransport._format_ip_for_url`", - "concise_description": "Argument `int | str` is not assignable to parameter `ip` with type `str` in function `WebhookTransport._format_ip_for_url`", - "severity": "error" - }, - { - "line": 102, - "column": 20, - "stop_line": 102, - "stop_column": 51, - "path": "src/documents/workflows/webhooks.py", - "code": -2, - "name": "bad-return", - "description": "Returned type `int | str | None` is not assignable to declared return type `str | None`", - "concise_description": "Returned type `int | str | None` is not assignable to declared return type `str | None`", - "severity": "error" - }, { "line": 23, "column": 9, @@ -12416,7 +12104,7 @@ "path": "src/paperless/adapter.py", "code": -2, "name": "bad-override", - "description": "Class member `CustomAccountAdapter.is_open_for_signup` overrides parent class `DefaultAccountAdapter` in an inconsistent manner\n `CustomAccountAdapter.is_open_for_signup` has type `BoundMethod[CustomAccountAdapter, (self: CustomAccountAdapter, request: Unknown) -> bool | Any]`, which is not assignable to `BoundMethod[CustomAccountAdapter, (self: CustomAccountAdapter, request: Unknown) -> Literal[True]]`, the type of `DefaultAccountAdapter.is_open_for_signup`", + "description": "Class member `CustomAccountAdapter.is_open_for_signup` overrides parent class `DefaultAccountAdapter` in an inconsistent manner\n `CustomAccountAdapter.is_open_for_signup` has type `(self: CustomAccountAdapter, request: Unknown) -> bool | Any`, which is not assignable to `(self: CustomAccountAdapter, request: Unknown) -> Literal[True]`, the type of `DefaultAccountAdapter.is_open_for_signup`\n Signature mismatch:\n expected: def is_open_for_signup(self: CustomAccountAdapter, request: Unknown) -> Literal[True]: ...\n ^^^^^^^^^^^^^ return type\n found: def is_open_for_signup(self: CustomAccountAdapter, request: Unknown) -> bool | Any: ...\n ^^^^^^^^^^ return type", "concise_description": "Class member `CustomAccountAdapter.is_open_for_signup` overrides parent class `DefaultAccountAdapter` in an inconsistent manner", "severity": "error" }, @@ -12452,7 +12140,7 @@ "path": "src/paperless/adapter.py", "code": -2, "name": "bad-override", - "description": "Class member `CustomSocialAccountAdapter.is_open_for_signup` overrides parent class `DefaultSocialAccountAdapter` in an inconsistent manner\n `CustomSocialAccountAdapter.is_open_for_signup` has type `BoundMethod[CustomSocialAccountAdapter, (self: CustomSocialAccountAdapter, request: Unknown, sociallogin: Unknown) -> bool | Any]`, which is not assignable to `BoundMethod[CustomSocialAccountAdapter, (self: CustomSocialAccountAdapter, request: Unknown, sociallogin: Unknown) -> Literal[True]]`, the type of `DefaultSocialAccountAdapter.is_open_for_signup`", + "description": "Class member `CustomSocialAccountAdapter.is_open_for_signup` overrides parent class `DefaultSocialAccountAdapter` in an inconsistent manner\n `CustomSocialAccountAdapter.is_open_for_signup` has type `(self: CustomSocialAccountAdapter, request: Unknown, sociallogin: Unknown) -> bool | Any`, which is not assignable to `(self: CustomSocialAccountAdapter, request: Unknown, sociallogin: Unknown) -> Literal[True]`, the type of `DefaultSocialAccountAdapter.is_open_for_signup`\n Signature mismatch:\n expected: def is_open_for_signup(self: CustomSocialAccountAdapter, request: Unknown, sociallogin: Unknown) -> Literal[True]: ...\n ^^^^^^^^^^^^^ return type\n found: def is_open_for_signup(self: CustomSocialAccountAdapter, request: Unknown, sociallogin: Unknown) -> bool | Any: ...\n ^^^^^^^^^^ return type", "concise_description": "Class member `CustomSocialAccountAdapter.is_open_for_signup` overrides parent class `DefaultSocialAccountAdapter` in an inconsistent manner", "severity": "error" }, @@ -12481,15 +12169,27 @@ "severity": "error" }, { - "line": 46, + "line": 48, "column": 9, - "stop_line": 46, - "stop_column": 17, + "stop_line": 48, + "stop_column": 21, "path": "src/paperless/admin.py", "code": -2, - "name": "bad-override", - "description": "Class member `PaperlessUserAdmin.get_form` overrides parent class `UserAdmin` in an inconsistent manner\n `PaperlessUserAdmin.get_form` has type `BoundMethod[PaperlessUserAdmin, (self: PaperlessUserAdmin, request: Unknown, obj: Unknown | None = None, **kwargs: Unknown) -> type[ModelForm[Unknown]]]`, which is not assignable to `BoundMethod[PaperlessUserAdmin, (self: PaperlessUserAdmin, request: HttpRequest, obj: Unknown | None = ..., change: bool = ..., **kwargs: Any) -> type[ModelForm[Unknown]]]`, the type of `UserAdmin.get_form`", - "concise_description": "Class member `PaperlessUserAdmin.get_form` overrides parent class `UserAdmin` in an inconsistent manner", + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `object.__setattr__`", + "concise_description": "Missing positional argument `value` in function `object.__setattr__`", + "severity": "error" + }, + { + "line": 48, + "column": 9, + "stop_line": 48, + "stop_column": 21, + "path": "src/paperless/admin.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['request']` is not assignable to parameter `self` with type `ModelForm[Unknown]` in function `object.__setattr__`", + "concise_description": "Argument `Literal['request']` is not assignable to parameter `self` with type `ModelForm[Unknown]` in function `object.__setattr__`", "severity": "error" }, { @@ -12517,57 +12217,117 @@ "severity": "error" }, { - "line": 88, - "column": 35, - "stop_line": 88, - "stop_column": 70, - "path": "src/paperless/checks.py", + "line": 51, + "column": 5, + "stop_line": 51, + "stop_column": 24, + "path": "src/paperless/celery.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", - "concise_description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", + "description": "Argument `(obj: object) -> bytes` is not assignable to parameter `encoder` with type `((Any) -> str) | None` in function `kombu.serialization.register`", + "concise_description": "Argument `(obj: object) -> bytes` is not assignable to parameter `encoder` with type `((Any) -> str) | None` in function `kombu.serialization.register`", + "severity": "error" + }, + { + "line": 52, + "column": 5, + "stop_line": 52, + "stop_column": 24, + "path": "src/paperless/celery.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `(payload: bytes) -> object` is not assignable to parameter `decoder` with type `((str) -> Any) | None` in function `kombu.serialization.register`", + "concise_description": "Argument `(payload: bytes) -> object` is not assignable to parameter `decoder` with type `((str) -> Any) | None` in function `kombu.serialization.register`", "severity": "error" }, { "line": 93, - "column": 1, + "column": 12, "stop_line": 93, - "stop_column": 12, + "stop_column": 26, "path": "src/paperless/checks.py", "code": -2, - "name": "bad-specialization", - "description": "`(app_configs: Unknown, **kwargs: Unknown) -> list[django.core.checks.messages.Warning | builtins.Warning] | list[Unknown]` is not assignable to upper bound `_CheckCallable` of type variable `_C`", - "concise_description": "`(app_configs: Unknown, **kwargs: Unknown) -> list[django.core.checks.messages.Warning | builtins.Warning] | list[Unknown]` is not assignable to upper bound `_CheckCallable` of type variable `_C`", + "name": "bad-return", + "description": "Returned type `list[Warning]` is not assignable to declared return type `list[Error]`", + "concise_description": "Returned type `list[Warning]` is not assignable to declared return type `list[Error]`", "severity": "error" }, { - "line": 138, - "column": 17, - "stop_line": 142, + "line": 179, + "column": 9, + "stop_line": 181, + "stop_column": 40, + "path": "src/paperless/checks.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `list[Error]` is not assignable to declared return type `list[Error | Warning]`", + "concise_description": "Returned type `list[Error]` is not assignable to declared return type `list[Error | Warning]`", + "severity": "error" + }, + { + "line": 198, + "column": 12, + "stop_line": 198, "stop_column": 18, "path": "src/paperless/checks.py", "code": -2, - "name": "bad-argument-type", - "description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `Error` in function `list.append`", - "concise_description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `Error` in function `list.append`", + "name": "bad-return", + "description": "Returned type `list[Warning]` is not assignable to declared return type `list[Error]`", + "concise_description": "Returned type `list[Warning]` is not assignable to declared return type `list[Error]`", "severity": "error" }, { - "line": 211, - "column": 13, - "stop_line": 213, - "stop_column": 14, + "line": 347, + "column": 26, + "stop_line": 350, + "stop_column": 6, + "path": "src/paperless/checks.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], capture_output=Literal[True])\n Possible overloads:\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: Literal[True], timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, *, universal_newlines: Literal[True], startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: Literal[False] | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: None = None, errors: None = None, input: Buffer | None = None, text: Literal[False] | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[bytes] [closest match]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: Buffer | str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[Any]", + "concise_description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], capture_output=Literal[True])", + "severity": "error" + }, + { + "line": 369, + "column": 16, + "stop_line": 369, + "stop_column": 20, + "path": "src/paperless/checks.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `list[Warning]` is not assignable to declared return type `list[Error]`", + "concise_description": "Returned type `list[Warning]` is not assignable to declared return type `list[Error]`", + "severity": "error" + }, + { + "line": 381, + "column": 21, + "stop_line": 385, + "stop_column": 22, "path": "src/paperless/checks.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", - "concise_description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", + "description": "Argument `Error` is not assignable to parameter `object` with type `Warning` in function `list.append`", + "concise_description": "Argument `Error` is not assignable to parameter `object` with type `Warning` in function `list.append`", "severity": "error" }, { - "line": 22, + "line": 388, + "column": 12, + "stop_line": 388, + "stop_column": 16, + "path": "src/paperless/checks.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `list[Warning]` is not assignable to declared return type `list[Error]`", + "concise_description": "Returned type `list[Warning]` is not assignable to declared return type `list[Error]`", + "severity": "error" + }, + { + "line": 27, "column": 16, - "stop_line": 22, + "stop_line": 27, "stop_column": 26, "path": "src/paperless/config.py", "code": -2, @@ -12577,9 +12337,69 @@ "severity": "error" }, { - "line": 174, + "line": 41, + "column": 28, + "stop_line": 41, + "stop_column": 78, + "path": "src/paperless/config.py", + "code": -2, + "name": "bad-assignment", + "description": "`str | Any` is not assignable to attribute `output_type` with type `OutputTypeChoices`", + "concise_description": "`str | Any` is not assignable to attribute `output_type` with type `OutputTypeChoices`", + "severity": "error" + }, + { + "line": 73, + "column": 21, + "stop_line": 73, + "stop_column": 57, + "path": "src/paperless/config.py", + "code": -2, + "name": "bad-assignment", + "description": "`str | Any` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`str | Any` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 75, + "column": 13, + "stop_line": 75, + "stop_column": 83, + "path": "src/paperless/config.py", + "code": -2, + "name": "bad-assignment", + "description": "`str | Any` is not assignable to attribute `archive_file_generation` with type `ArchiveFileGenerationChoices`", + "concise_description": "`str | Any` is not assignable to attribute `archive_file_generation` with type `ArchiveFileGenerationChoices`", + "severity": "error" + }, + { + "line": 78, + "column": 22, + "stop_line": 78, + "stop_column": 68, + "path": "src/paperless/config.py", + "code": -2, + "name": "bad-assignment", + "description": "`str | Any` is not assignable to attribute `clean` with type `CleanChoices`", + "concise_description": "`str | Any` is not assignable to attribute `clean` with type `CleanChoices`", + "severity": "error" + }, + { + "line": 94, + "column": 13, + "stop_line": 95, + "stop_column": 54, + "path": "src/paperless/config.py", + "code": -2, + "name": "bad-assignment", + "description": "`str | Any` is not assignable to attribute `color_conversion_strategy` with type `ColorConvertChoices`", + "concise_description": "`str | Any` is not assignable to attribute `color_conversion_strategy` with type `ColorConvertChoices`", + "severity": "error" + }, + { + "line": 181, "column": 26, - "stop_line": 174, + "stop_line": 181, "stop_column": 54, "path": "src/paperless/config.py", "code": -2, @@ -12589,9 +12409,9 @@ "severity": "error" }, { - "line": 175, + "line": 182, "column": 25, - "stop_line": 175, + "stop_line": 182, "stop_column": 81, "path": "src/paperless/config.py", "code": -2, @@ -12601,69 +12421,93 @@ "severity": "error" }, { - "line": 11, - "column": 41, - "stop_line": 11, - "stop_column": 76, + "line": 31, + "column": 12, + "stop_line": 31, + "stop_column": 29, "path": "src/paperless/consumers.py", "code": -2, "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `is_authenticated`", - "concise_description": "Object of class `NoneType` has no attribute `is_authenticated`", + "description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", "severity": "error" }, { - "line": 19, - "column": 13, - "stop_line": 19, - "stop_column": 30, + "line": 34, + "column": 22, + "stop_line": 34, + "stop_column": 33, "path": "src/paperless/consumers.py", "code": -2, "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `is_superuser`", - "concise_description": "Object of class `NoneType` has no attribute `is_superuser`", + "description": "Object of class `AbstractBaseUser` has no attribute `groups`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `groups`", "severity": "error" }, { - "line": 20, - "column": 16, - "stop_line": 20, - "stop_column": 23, + "line": 49, + "column": 35, + "stop_line": 49, + "stop_column": 48, "path": "src/paperless/consumers.py", "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `id`", - "concise_description": "Object of class `NoneType` has no attribute `id`", + "name": "bad-argument-type", + "description": "Argument `ProgressUpdateData` is not assignable to parameter `data` with type `PermissionsData` in function `StatusConsumer._can_view`\n Field `owner_id` is `NotRequired` and read-write in `PermissionsData`, so it cannot be required in `ProgressUpdateData`", + "concise_description": "Argument `ProgressUpdateData` is not assignable to parameter `data` with type `PermissionsData` in function `StatusConsumer._can_view`", "severity": "error" }, { - "line": 23, + "line": 61, + "column": 35, + "stop_line": 61, + "stop_column": 48, + "path": "src/paperless/consumers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentUpdatedData` is not assignable to parameter `data` with type `PermissionsData` in function `StatusConsumer._can_view`\n Field `owner_id` is `NotRequired` and read-write in `PermissionsData`, so it cannot be required in `DocumentUpdatedData`", + "concise_description": "Argument `DocumentUpdatedData` is not assignable to parameter `data` with type `PermissionsData` in function `StatusConsumer._can_view`", + "severity": "error" + }, + { + "line": 31, + "column": 12, + "stop_line": 31, + "stop_column": 15, + "path": "src/paperless/network.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `list[int | str]` is not assignable to declared return type `list[str]`", + "concise_description": "Returned type `list[int | str]` is not assignable to declared return type `list[str]`", + "severity": "error" + }, + { + "line": 404, "column": 17, - "stop_line": 23, - "stop_column": 28, - "path": "src/paperless/consumers.py", + "stop_line": 404, + "stop_column": 70, + "path": "src/paperless/parsers/tesseract.py", "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `groups`", - "concise_description": "Object of class `NoneType` has no attribute `groups`", + "name": "bad-argument-type", + "description": "Argument `bytes | None` is not assignable to parameter `data` with type `Buffer` in function `pathlib.Path.write_bytes`\n Protocol `Buffer` requires attribute `__buffer__`", + "concise_description": "Argument `bytes | None` is not assignable to parameter `data` with type `Buffer` in function `pathlib.Path.write_bytes`", "severity": "error" }, { - "line": 37, - "column": 9, - "stop_line": 37, - "stop_column": 19, - "path": "src/paperless/consumers.py", + "line": 61, + "column": 38, + "stop_line": 61, + "stop_column": 56, + "path": "src/paperless/parsers/utils.py", "code": -2, - "name": "bad-param-name-override", - "description": "Class member `StatusConsumer.disconnect` overrides parent class `WebsocketConsumer` in an inconsistent manner\n Got parameter name `close_code`, expected `code`", - "concise_description": "Class member `StatusConsumer.disconnect` overrides parent class `WebsocketConsumer` in an inconsistent manner", + "name": "no-matching-overload", + "description": "No matching overload found for function `pikepdf._core.Object.get` called with arguments: (Literal['/Marked'], Literal[False])\n Possible overloads:\n (key: Name | int | str, default: T | None = ...) -> Object | T | None [closest match]\n (path: _NamePath, default: T | None = ...) -> Object | T | None", + "concise_description": "No matching overload found for function `pikepdf._core.Object.get` called with arguments: (Literal['/Marked'], Literal[False])", "severity": "error" }, { - "line": 33, + "line": 39, "column": 16, - "stop_line": 33, + "stop_line": 39, "stop_column": 29, "path": "src/paperless/serialisers.py", "code": -2, @@ -12673,9 +12517,9 @@ "severity": "error" }, { - "line": 86, + "line": 92, "column": 11, - "stop_line": 86, + "stop_line": 92, "stop_column": 15, "path": "src/paperless/serialisers.py", "code": -2, @@ -12685,9 +12529,9 @@ "severity": "error" }, { - "line": 146, + "line": 152, "column": 11, - "stop_line": 146, + "stop_line": 152, "stop_column": 15, "path": "src/paperless/serialisers.py", "code": -2, @@ -12697,9 +12541,9 @@ "severity": "error" }, { - "line": 158, + "line": 164, "column": 11, - "stop_line": 158, + "stop_line": 164, "stop_column": 15, "path": "src/paperless/serialisers.py", "code": -2, @@ -12709,9 +12553,9 @@ "severity": "error" }, { - "line": 192, + "line": 198, "column": 11, - "stop_line": 192, + "stop_line": 198, "stop_column": 15, "path": "src/paperless/serialisers.py", "code": -2, @@ -12721,21 +12565,33 @@ "severity": "error" }, { - "line": 214, + "line": 222, "column": 9, - "stop_line": 214, + "stop_line": 222, "stop_column": 23, "path": "src/paperless/serialisers.py", "code": -2, "name": "bad-override", - "description": "Class member `ApplicationConfigurationSerializer.run_validation` overrides parent class `ModelSerializer` in an inconsistent manner\n `ApplicationConfigurationSerializer.run_validation` has type `BoundMethod[ApplicationConfigurationSerializer, (self: ApplicationConfigurationSerializer, data: Unknown) -> Any]`, which is not assignable to `BoundMethod[ApplicationConfigurationSerializer, (self: ApplicationConfigurationSerializer, data: Any = ...) -> Any]`, the type of `ModelSerializer.run_validation`", + "description": "Class member `ApplicationConfigurationSerializer.run_validation` overrides parent class `ModelSerializer` in an inconsistent manner\n `ApplicationConfigurationSerializer.run_validation` has type `(self: ApplicationConfigurationSerializer, data: Unknown) -> Any`, which is not assignable to `(self: ApplicationConfigurationSerializer, data: Any = ...) -> Any`, the type of `ModelSerializer.run_validation`\n Signature mismatch:\n expected: def run_validation(self: ApplicationConfigurationSerializer, data: Any = ...) -> Any: ...\n ^^^^^^^^^ parameters\n found: def run_validation(self: ApplicationConfigurationSerializer, data: Unknown) -> Any: ...\n ^^^^^^^ parameters", "concise_description": "Class member `ApplicationConfigurationSerializer.run_validation` overrides parent class `ModelSerializer` in an inconsistent manner", "severity": "error" }, { - "line": 239, + "line": 251, + "column": 28, + "stop_line": 251, + "stop_column": 43, + "path": "src/paperless/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `UploadedFile` has no attribute `field_name`", + "concise_description": "Object of class `UploadedFile` has no attribute `field_name`", + "severity": "error" + }, + { + "line": 294, "column": 11, - "stop_line": 239, + "stop_line": 294, "stop_column": 15, "path": "src/paperless/serialisers.py", "code": -2, @@ -12745,35 +12601,23 @@ "severity": "error" }, { - "line": 301, - "column": 39, - "stop_line": 301, - "stop_column": 77, - "path": "src/paperless/settings.py", + "line": 278, + "column": 43, + "stop_line": 283, + "stop_column": 6, + "path": "src/paperless/settings/__init__.py", "code": -2, - "name": "bad-argument-type", - "description": "Argument `str | None` is not assignable to parameter `default` with type `PathLike[Unknown] | str` in function `__get_path`", - "concise_description": "Argument `str | None` is not assignable to parameter `default` with type `PathLike[Unknown] | str` in function `__get_path`", + "name": "bad-typed-dict-key", + "description": "`dict[str, int | list[str] | str]` is not assignable to TypedDict key `CONFIG` with type `str`", + "concise_description": "`dict[str, int | list[str] | str]` is not assignable to TypedDict key `CONFIG` with type `str`", "severity": "error" }, { - "line": 434, - "column": 12, - "stop_line": 434, - "stop_column": 85, - "path": "src/paperless/settings.py", - "code": -2, - "name": "bad-return", - "description": "Returned type `tuple[str | None, str, str, str, str]` is not assignable to declared return type `tuple[str, str, str, str, str]`", - "concise_description": "Returned type `tuple[str | None, str, str, str, str]` is not assignable to declared return type `tuple[str, str, str, str, str]`", - "severity": "error" - }, - { - "line": 665, + "line": 449, "column": 30, - "stop_line": 665, + "stop_line": 449, "stop_column": 52, - "path": "src/paperless/settings.py", + "path": "src/paperless/settings/__init__.py", "code": -2, "name": "bad-argument-type", "description": "Argument `str | None` is not assignable to parameter `object` with type `str` in function `list.append`", @@ -12781,207 +12625,1563 @@ "severity": "error" }, { - "line": 739, - "column": 21, - "stop_line": 739, - "stop_column": 50, - "path": "src/paperless/settings.py", - "code": -2, - "name": "bad-typed-dict-key", - "description": "`str | None` is not assignable to TypedDict key with type `Path | dict[Unknown, Unknown] | str`", - "concise_description": "`str | None` is not assignable to TypedDict key with type `Path | dict[Unknown, Unknown] | str`", - "severity": "error" - }, - { - "line": 740, - "column": 21, - "stop_line": 740, - "stop_column": 63, - "path": "src/paperless/settings.py", - "code": -2, - "name": "bad-typed-dict-key", - "description": "`str` is not assignable to TypedDict key `NAME` with type `Path`", - "concise_description": "`str` is not assignable to TypedDict key `NAME` with type `Path`", - "severity": "error" - }, - { - "line": 746, - "column": 44, - "stop_line": 746, - "stop_column": 73, - "path": "src/paperless/settings.py", - "code": -2, - "name": "bad-typed-dict-key", - "description": "`str | None` is not assignable to TypedDict key `PORT` with type `Path | dict[Unknown, Unknown] | str`", - "concise_description": "`str | None` is not assignable to TypedDict key `PORT` with type `Path | dict[Unknown, Unknown] | str`", - "severity": "error" - }, - { - "line": 774, - "column": 31, - "stop_line": 781, - "stop_column": 18, - "path": "src/paperless/settings.py", - "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `typing.MutableMapping.update` called with arguments: (dict[str, dict[str, int]])\n Possible overloads:\n (m: SupportsKeysAndGetItem[str, str | None], /) -> None [closest match]\n (m: SupportsKeysAndGetItem[str, str | None], /, **kwargs: str | None) -> None\n (m: Iterable[tuple[str, str | None]], /) -> None\n (m: Iterable[tuple[str, str | None]], /, **kwargs: str | None) -> None\n (**kwargs: str | None) -> None", - "concise_description": "No matching overload found for function `typing.MutableMapping.update` called with arguments: (dict[str, dict[str, int]])", - "severity": "error" - }, - { - "line": 778, - "column": 44, - "stop_line": 778, - "stop_column": 80, - "path": "src/paperless/settings.py", - "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", - "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", - "severity": "error" - }, - { - "line": 789, - "column": 32, - "stop_line": 789, - "stop_column": 67, - "path": "src/paperless/settings.py", - "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", - "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", - "severity": "error" - }, - { - "line": 793, - "column": 40, - "stop_line": 793, - "stop_column": 75, - "path": "src/paperless/settings.py", - "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", - "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", - "severity": "error" - }, - { - "line": 796, - "column": 32, - "stop_line": 796, - "stop_column": 67, - "path": "src/paperless/settings.py", - "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", - "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", - "severity": "error" - }, - { - "line": 1328, - "column": 12, - "stop_line": 1328, - "stop_column": 25, - "path": "src/paperless/settings.py", - "code": -2, - "name": "bad-return", - "description": "Returned type `set[date]` is not assignable to declared return type `set[datetime]`", - "concise_description": "Returned type `set[date]` is not assignable to declared return type `set[datetime]`", - "severity": "error" - }, - { - "line": 1335, - "column": 20, - "stop_line": 1335, - "stop_column": 76, - "path": "src/paperless/settings.py", - "code": -2, - "name": "bad-assignment", - "description": "`set[datetime]` is not assignable to variable `IGNORE_DATES` with type `set[date]`", - "concise_description": "`set[datetime]` is not assignable to variable `IGNORE_DATES` with type `set[date]`", - "severity": "error" - }, - { - "line": 1335, - "column": 40, - "stop_line": 1335, - "stop_column": 75, - "path": "src/paperless/settings.py", + "line": 1015, + "column": 39, + "stop_line": 1015, + "stop_column": 74, + "path": "src/paperless/settings/__init__.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `str | None` is not assignable to parameter `env_ignore` with type `str` in function `_parse_ignore_dates`", - "concise_description": "Argument `str | None` is not assignable to parameter `env_ignore` with type `str` in function `_parse_ignore_dates`", + "description": "Argument `str | None` is not assignable to parameter `env_ignore` with type `str` in function `paperless.settings.custom.parse_ignore_dates`", + "concise_description": "Argument `str | None` is not assignable to parameter `env_ignore` with type `str` in function `paperless.settings.custom.parse_ignore_dates`", "severity": "error" }, { - "line": 41, - "column": 14, - "stop_line": 41, - "stop_column": 32, - "path": "src/paperless/tests/test_checks.py", + "line": 171, + "column": 27, + "stop_line": 171, + "stop_column": 42, + "path": "src/paperless/settings/custom.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `dict[str, float] | str` is not assignable to parameter `key` with type `str` in function `os.getenv`", + "concise_description": "Argument `dict[str, float] | str` is not assignable to parameter `key` with type `str` in function `os.getenv`", + "severity": "error" + }, + { + "line": 179, + "column": 52, + "stop_line": 179, + "stop_column": 63, + "path": "src/paperless/settings/custom.py", "code": -2, "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `data_dir`", - "concise_description": "Class `dirs` has no class attribute `data_dir`", + "description": "Object of class `dict` has no attribute `split`", + "concise_description": "Object of class `dict` has no attribute `split`", "severity": "error" }, { - "line": 42, - "column": 14, - "stop_line": 42, - "stop_column": 33, - "path": "src/paperless/tests/test_checks.py", + "line": 771, + "column": 12, + "stop_line": 771, + "stop_column": 24, + "path": "src/paperless/tests/parsers/conftest.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `(**django_settings_overrides: Unknown) -> _GeneratorContextManager[RasterisedDocumentParser]` is not assignable to declared return type `(...) -> Generator[RasterisedDocumentParser]`\n Protocol `Generator` requires attribute `__next__`", + "concise_description": "Returned type `(**django_settings_overrides: Unknown) -> _GeneratorContextManager[RasterisedDocumentParser]` is not assignable to declared return type `(...) -> Generator[RasterisedDocumentParser]`", + "severity": "error" + }, + { + "line": 168, + "column": 45, + "stop_line": 168, + "stop_column": 49, + "path": "src/paperless/tests/parsers/test_mail_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['na']` is not assignable to parameter `document_path` with type `Path` in function `paperless.parsers.mail.MailDocumentParser.extract_metadata`", + "concise_description": "Argument `Literal['na']` is not assignable to parameter `document_path` with type `Path` in function `paperless.parsers.mail.MailDocumentParser.extract_metadata`", + "severity": "error" + }, + { + "line": 372, + "column": 47, + "stop_line": 372, + "stop_column": 75, + "path": "src/paperless/tests/parsers/test_mail_parser.py", "code": -2, "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", + "description": "Object of class `NoneType` has no attribute `url`", + "concise_description": "Object of class `NoneType` has no attribute `url`", "severity": "error" }, { - "line": 43, - "column": 14, - "stop_line": 43, + "line": 727, + "column": 20, + "stop_line": 727, + "stop_column": 31, + "path": "src/paperless/tests/parsers/test_mail_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `url`", + "concise_description": "Object of class `NoneType` has no attribute `url`", + "severity": "error" + }, + { + "line": 25, + "column": 23, + "stop_line": 36, + "stop_column": 10, + "path": "src/paperless/tests/parsers/test_mail_parser_live.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], check=Literal[True])\n Possible overloads:\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: Literal[True], timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, *, universal_newlines: Literal[True], startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: Literal[False] | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: None = None, errors: None = None, input: Buffer | None = None, text: Literal[False] | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[bytes] [closest match]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> object) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: Buffer | str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[Any]", + "concise_description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], check=Literal[True])", + "severity": "error" + }, + { + "line": 264, + "column": 37, + "stop_line": 264, + "stop_column": 49, + "path": "src/paperless/tests/parsers/test_mail_parser_live.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `pdf_path` with type `Path` in function `extract_text`", + "concise_description": "Argument `Path | None` is not assignable to parameter `pdf_path` with type `Path` in function `extract_text`", + "severity": "error" + }, + { + "line": 75, + "column": 42, + "stop_line": 75, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 109, + "column": 42, + "stop_line": 109, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 161, + "column": 42, + "stop_line": 161, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 203, + "column": 42, + "stop_line": 203, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 246, + "column": 42, + "stop_line": 246, + "stop_column": 47, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 286, + "column": 42, + "stop_line": 286, + "stop_column": 47, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 326, + "column": 42, + "stop_line": 326, + "stop_column": 47, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 358, + "column": 42, + "stop_line": 358, + "stop_column": 47, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 399, + "column": 42, + "stop_line": 399, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`str` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`str` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 432, + "column": 42, + "stop_line": 432, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_parse_modes.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 77, + "column": 34, + "stop_line": 77, + "stop_column": 36, + "path": "src/paperless/tests/parsers/test_remote_parser.py", + "code": -2, + "name": "bad-argument-count", + "description": "Expected 1 more positional argument", + "concise_description": "Expected 1 more positional argument", + "severity": "error" + }, + { + "line": 28, + "column": 24, + "stop_line": 28, + "stop_column": 35, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['input.pdf']` is not assignable to parameter `input_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "concise_description": "Argument `Literal['input.pdf']` is not assignable to parameter `input_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "severity": "error" + }, + { + "line": 29, + "column": 25, + "stop_line": 29, + "stop_column": 37, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['output.pdf']` is not assignable to parameter `output_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "concise_description": "Argument `Literal['output.pdf']` is not assignable to parameter `output_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "severity": "error" + }, + { + "line": 30, + "column": 26, + "stop_line": 30, "stop_column": 39, - "path": "src/paperless/tests/test_checks.py", + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `consumption_dir`", - "concise_description": "Class `dirs` has no class attribute `consumption_dir`", - "severity": "error" - }, - { - "line": 45, - "column": 35, - "stop_line": 45, - "stop_column": 53, - "path": "src/paperless/tests/test_checks.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `data_dir`", - "concise_description": "Class `dirs` has no class attribute `data_dir`", - "severity": "error" - }, - { - "line": 46, - "column": 35, - "stop_line": 46, - "stop_column": 54, - "path": "src/paperless/tests/test_checks.py", - "code": -2, - "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `media_dir`", - "concise_description": "Class `dirs` has no class attribute `media_dir`", + "name": "bad-argument-type", + "description": "Argument `Literal['sidecar.txt']` is not assignable to parameter `sidecar_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "concise_description": "Argument `Literal['sidecar.txt']` is not assignable to parameter `sidecar_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", "severity": "error" }, { "line": 47, - "column": 35, + "column": 13, "stop_line": 47, - "stop_column": 60, - "path": "src/paperless/tests/test_checks.py", + "stop_column": 27, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", "code": -2, "name": "missing-attribute", - "description": "Class `dirs` has no class attribute `consumption_dir`", - "concise_description": "Class `dirs` has no class attribute `consumption_dir`", + "description": "Object of class `NoneType` has no attribute `pages`", + "concise_description": "Object of class `NoneType` has no attribute `pages`", + "severity": "error" + }, + { + "line": 48, + "column": 13, + "stop_line": 48, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 65, + "column": 13, + "stop_line": 65, + "stop_column": 30, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `language`", + "concise_description": "Object of class `NoneType` has no attribute `language`", + "severity": "error" + }, + { + "line": 66, + "column": 13, + "stop_line": 66, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 83, + "column": 13, + "stop_line": 83, + "stop_column": 33, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `output_type`", + "concise_description": "Object of class `NoneType` has no attribute `output_type`", + "severity": "error" + }, + { + "line": 84, + "column": 13, + "stop_line": 84, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 103, + "column": 13, + "stop_line": 103, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `mode`", + "concise_description": "Object of class `NoneType` has no attribute `mode`", + "severity": "error" + }, + { + "line": 104, + "column": 13, + "stop_line": 104, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 107, + "column": 28, + "stop_line": 107, + "stop_column": 39, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['input.pdf']` is not assignable to parameter `input_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "concise_description": "Argument `Literal['input.pdf']` is not assignable to parameter `input_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "severity": "error" + }, + { + "line": 108, + "column": 29, + "stop_line": 108, + "stop_column": 41, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['output.pdf']` is not assignable to parameter `output_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "concise_description": "Argument `Literal['output.pdf']` is not assignable to parameter `output_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "severity": "error" + }, + { + "line": 109, + "column": 30, + "stop_line": 109, + "stop_column": 43, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['sidecar.txt']` is not assignable to parameter `sidecar_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "concise_description": "Argument `Literal['sidecar.txt']` is not assignable to parameter `sidecar_file` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.construct_ocrmypdf_parameters`", + "severity": "error" + }, + { + "line": 121, + "column": 13, + "stop_line": 121, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `mode`", + "concise_description": "Object of class `NoneType` has no attribute `mode`", + "severity": "error" + }, + { + "line": 122, + "column": 13, + "stop_line": 122, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 141, + "column": 13, + "stop_line": 141, + "stop_column": 35, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `unpaper_clean`", + "concise_description": "Object of class `NoneType` has no attribute `unpaper_clean`", + "severity": "error" + }, + { + "line": 142, + "column": 13, + "stop_line": 142, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 150, + "column": 13, + "stop_line": 150, + "stop_column": 35, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `unpaper_clean`", + "concise_description": "Object of class `NoneType` has no attribute `unpaper_clean`", + "severity": "error" + }, + { + "line": 151, + "column": 13, + "stop_line": 151, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 169, + "column": 13, + "stop_line": 169, + "stop_column": 28, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `deskew`", + "concise_description": "Object of class `NoneType` has no attribute `deskew`", + "severity": "error" + }, + { + "line": 170, + "column": 13, + "stop_line": 170, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 208, + "column": 13, + "stop_line": 208, + "stop_column": 38, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `max_image_pixels`", + "concise_description": "Object of class `NoneType` has no attribute `max_image_pixels`", + "severity": "error" + }, + { + "line": 209, + "column": 13, + "stop_line": 209, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 226, + "column": 13, + "stop_line": 226, + "stop_column": 47, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `color_conversion_strategy`", + "concise_description": "Object of class `NoneType` has no attribute `color_conversion_strategy`", + "severity": "error" + }, + { + "line": 227, + "column": 13, + "stop_line": 227, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 249, + "column": 13, + "stop_line": 249, + "stop_column": 31, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `user_args`", + "concise_description": "Object of class `NoneType` has no attribute `user_args`", + "severity": "error" + }, + { + "line": 250, + "column": 13, + "stop_line": 250, + "stop_column": 26, + "path": "src/paperless/tests/parsers/test_tesseract_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 278, + "column": 38, + "stop_line": 278, + "stop_column": 75, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `image` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.get_dpi`", + "concise_description": "Argument `str` is not assignable to parameter `image` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.get_dpi`", + "severity": "error" + }, + { + "line": 289, + "column": 17, + "stop_line": 289, + "stop_column": 65, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `image` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.calculate_a4_dpi`", + "concise_description": "Argument `str` is not assignable to parameter `image` with type `Path` in function `paperless.parsers.tesseract.RasterisedDocumentParser.calculate_a4_dpi`", + "severity": "error" + }, + { + "line": 391, + "column": 13, + "stop_line": 391, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 407, + "column": 13, + "stop_line": 407, + "stop_column": 40, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "severity": "error" + }, + { + "line": 416, + "column": 42, + "stop_line": 416, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['redo']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['redo']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 424, + "column": 13, + "stop_line": 424, + "stop_column": 40, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "severity": "error" + }, + { + "line": 433, + "column": 42, + "stop_line": 433, + "stop_column": 49, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['force']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['force']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 439, + "column": 13, + "stop_line": 439, + "stop_column": 40, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "severity": "error" + }, + { + "line": 448, + "column": 42, + "stop_line": 448, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 452, + "column": 13, + "stop_line": 452, + "stop_column": 40, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "severity": "error" + }, + { + "line": 464, + "column": 42, + "stop_line": 464, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 504, + "column": 13, + "stop_line": 504, + "stop_column": 40, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "severity": "error" + }, + { + "line": 520, + "column": 13, + "stop_line": 520, + "stop_column": 40, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "severity": "error" + }, + { + "line": 533, + "column": 46, + "stop_line": 533, + "stop_column": 79, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 567, + "column": 13, + "stop_line": 567, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 586, + "column": 42, + "stop_line": 586, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`str` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`str` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 593, + "column": 13, + "stop_line": 593, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 602, + "column": 42, + "stop_line": 602, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 609, + "column": 13, + "stop_line": 609, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 629, + "column": 42, + "stop_line": 629, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['redo']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['redo']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 635, + "column": 16, + "stop_line": 635, + "stop_column": 49, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 655, + "column": 42, + "stop_line": 655, + "stop_column": 49, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['force']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['force']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 661, + "column": 16, + "stop_line": 661, + "stop_column": 49, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 685, + "column": 13, + "stop_line": 685, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 708, + "column": 13, + "stop_line": 708, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 731, + "column": 13, + "stop_line": 731, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 757, + "column": 42, + "stop_line": 757, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 765, + "column": 13, + "stop_line": 765, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 783, + "column": 42, + "stop_line": 783, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 790, + "column": 13, + "stop_line": 790, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 841, + "column": 42, + "stop_line": 841, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 847, + "column": 16, + "stop_line": 847, + "stop_column": 49, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 871, + "column": 42, + "stop_line": 871, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 898, + "column": 42, + "stop_line": 898, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 928, + "column": 42, + "stop_line": 928, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 936, + "column": 13, + "stop_line": 936, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 956, + "column": 42, + "stop_line": 956, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['redo']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['redo']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 964, + "column": 13, + "stop_line": 964, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 992, + "column": 42, + "stop_line": 992, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 1000, + "column": 13, + "stop_line": 1000, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 1016, + "column": 42, + "stop_line": 1016, + "stop_column": 48, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['auto']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 1020, + "column": 13, + "stop_line": 1020, + "stop_column": 40, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "concise_description": "Argument `str | None` is not assignable to parameter `content` with type `str` in function `assert_ordered_substrings`", + "severity": "error" + }, + { + "line": 1055, + "column": 42, + "stop_line": 1055, + "stop_column": 47, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-assignment", + "description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "concise_description": "`Literal['off']` is not assignable to attribute `mode` with type `ModeChoices`", + "severity": "error" + }, + { + "line": 1062, + "column": 53, + "stop_line": 1062, + "stop_column": 80, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `unistr` with type `str` in function `unicodedata.normalize`", + "concise_description": "Argument `str | None` is not assignable to parameter `unistr` with type `str` in function `unicodedata.normalize`", + "severity": "error" + }, + { + "line": 1087, + "column": 14, + "stop_line": 1087, + "stop_column": 37, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__enter__`\n Did you mean `__iter__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1087, + "column": 14, + "stop_line": 1087, + "stop_column": 37, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__exit__`\n Did you mean `__next__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1114, + "column": 14, + "stop_line": 1114, + "stop_column": 56, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__enter__`\n Did you mean `__iter__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1114, + "column": 14, + "stop_line": 1114, + "stop_column": 56, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__exit__`\n Did you mean `__next__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1123, + "column": 14, + "stop_line": 1123, + "stop_column": 77, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__enter__`\n Did you mean `__iter__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1123, + "column": 14, + "stop_line": 1123, + "stop_column": 77, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__exit__`\n Did you mean `__next__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1132, + "column": 14, + "stop_line": 1132, + "stop_column": 77, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__enter__`\n Did you mean `__iter__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1132, + "column": 14, + "stop_line": 1132, + "stop_column": 77, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__exit__`\n Did you mean `__next__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1153, + "column": 14, + "stop_line": 1153, + "stop_column": 77, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__enter__`\n Did you mean `__iter__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1153, + "column": 14, + "stop_line": 1153, + "stop_column": 77, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__exit__`\n Did you mean `__next__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1161, + "column": 14, + "stop_line": 1161, + "stop_column": 69, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__enter__`\n Did you mean `__iter__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1161, + "column": 14, + "stop_line": 1161, + "stop_column": 69, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__exit__`\n Did you mean `__next__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1170, + "column": 14, + "stop_line": 1170, + "stop_column": 70, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__enter__`\n Did you mean `__iter__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1170, + "column": 14, + "stop_line": 1170, + "stop_column": 70, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "bad-context-manager", + "description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager\n Object of class `Generator` has no attribute `__exit__`\n Did you mean `__next__`?", + "concise_description": "Cannot use `Generator[RasterisedDocumentParser]` as a context manager", + "severity": "error" + }, + { + "line": 1199, + "column": 45, + "stop_line": 1199, + "stop_column": 78, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 1208, + "column": 27, + "stop_line": 1208, + "stop_column": 60, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 1218, + "column": 45, + "stop_line": 1218, + "stop_column": 78, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 1230, + "column": 13, + "stop_line": 1230, + "stop_column": 46, + "path": "src/paperless/tests/parsers/test_tesseract_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 115, + "column": 19, + "stop_line": 115, + "stop_column": 49, + "path": "src/paperless/tests/parsers/test_tika_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 25, + "column": 16, + "stop_line": 25, + "stop_column": 30, + "path": "src/paperless/tests/test_celery.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `object`\n Object of class `object` has no attribute `__getitem__`", + "concise_description": "Cannot index into `object`", + "severity": "error" + }, + { + "line": 26, + "column": 16, + "stop_line": 26, + "stop_column": 30, + "path": "src/paperless/tests/test_celery.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `object`\n Object of class `object` has no attribute `__getitem__`", + "concise_description": "Cannot index into `object`", + "severity": "error" + }, + { + "line": 296, + "column": 16, + "stop_line": 296, + "stop_column": 39, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "not-iterable", + "description": "`in` is not supported between `str` and `None`", + "concise_description": "`in` is not supported between `str` and `None`", + "severity": "error" + }, + { + "line": 297, + "column": 16, + "stop_line": 297, + "stop_column": 45, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "not-iterable", + "description": "`in` is not supported between `str` and `None`", + "concise_description": "`in` is not supported between `str` and `None`", + "severity": "error" + }, + { + "line": 315, + "column": 29, + "stop_line": 315, + "stop_column": 53, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `str.join` called with arguments: (Generator[str | None])\n Possible overloads:\n (iterable: Iterable[LiteralString], /) -> LiteralString [closest match]\n (iterable: Iterable[str], /) -> str", + "concise_description": "No matching overload found for function `str.join` called with arguments: (Generator[str | None])", + "severity": "error" + }, + { + "line": 345, + "column": 16, + "stop_line": 345, + "stop_column": 56, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "not-iterable", + "description": "`in` is not supported between `Literal['PAPERLESS_DB_TIMEOUT']` and `None`", + "concise_description": "`in` is not supported between `Literal['PAPERLESS_DB_TIMEOUT']` and `None`", + "severity": "error" + }, + { + "line": 348, + "column": 20, + "stop_line": 348, + "stop_column": 50, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "not-iterable", + "description": "`not in` is not supported between `str` and `None`", + "concise_description": "`not in` is not supported between `str` and `None`", + "severity": "error" + }, + { + "line": 376, + "column": 16, + "stop_line": 376, + "stop_column": 56, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "not-iterable", + "description": "`in` is not supported between `Literal['PAPERLESS_DB_OPTIONS']` and `None`", + "concise_description": "`in` is not supported between `Literal['PAPERLESS_DB_OPTIONS']` and `None`", + "severity": "error" + }, + { + "line": 599, + "column": 16, + "stop_line": 599, + "stop_column": 44, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "not-iterable", + "description": "`in` is not supported between `Literal['v2.20.10']` and `None`", + "concise_description": "`in` is not supported between `Literal['v2.20.10']` and `None`", + "severity": "error" + }, + { + "line": 328, + "column": 35, + "stop_line": 328, + "stop_column": 49, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_highest_score_wins.LowScoreParser]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_highest_score_wins.LowScoreParser]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`", + "severity": "error" + }, + { + "line": 329, + "column": 35, + "stop_line": 329, + "stop_column": 50, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_highest_score_wins.HighScoreParser]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_highest_score_wins.HighScoreParser]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`", + "severity": "error" + }, + { + "line": 355, + "column": 35, + "stop_line": 355, + "stop_column": 50, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_parser_returning_none_score_is_skipped.DecliningParser]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_parser_returning_none_score_is_skipped.DecliningParser]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`", + "severity": "error" + }, + { + "line": 381, + "column": 35, + "stop_line": 381, + "stop_column": 49, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_all_parsers_decline_returns_none.AlwaysDeclines]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_all_parsers_decline_returns_none.AlwaysDeclines]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`", + "severity": "error" + }, + { + "line": 382, + "column": 35, + "stop_line": 382, + "stop_column": 49, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_all_parsers_decline_returns_none.AlwaysDeclines]` is not assignable to parameter `object` with type `type[ParserProtocol]` in function `list.append`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_all_parsers_decline_returns_none.AlwaysDeclines]` is not assignable to parameter `object` with type `type[ParserProtocol]` in function `list.append`", + "severity": "error" + }, + { + "line": 423, + "column": 35, + "stop_line": 423, + "stop_column": 48, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_external_parser_beats_builtin_same_score.BuiltinParser]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_external_parser_beats_builtin_same_score.BuiltinParser]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`", + "severity": "error" + }, + { + "line": 424, + "column": 35, + "stop_line": 424, + "stop_column": 49, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_external_parser_beats_builtin_same_score.ExternalParser]` is not assignable to parameter `object` with type `type[ParserProtocol]` in function `list.append`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_external_parser_beats_builtin_same_score.ExternalParser]` is not assignable to parameter `object` with type `type[ParserProtocol]` in function `list.append`", + "severity": "error" + }, + { + "line": 465, + "column": 35, + "stop_line": 465, + "stop_column": 51, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_builtin_wins_when_external_declines.AcceptingBuiltin]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_builtin_wins_when_external_declines.AcceptingBuiltin]` is not assignable to parameter `parser_class` with type `type[ParserProtocol]` in function `paperless.parsers.registry.ParserRegistry.register_builtin`", + "severity": "error" + }, + { + "line": 466, + "column": 35, + "stop_line": 466, + "stop_column": 52, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestParserRegistryGetParserForFile.test_builtin_wins_when_external_declines.DecliningExternal]` is not assignable to parameter `object` with type `type[ParserProtocol]` in function `list.append`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestParserRegistryGetParserForFile.test_builtin_wins_when_external_declines.DecliningExternal]` is not assignable to parameter `object` with type `type[ParserProtocol]` in function `list.append`", + "severity": "error" + }, + { + "line": 694, + "column": 35, + "stop_line": 694, + "stop_column": 44, + "path": "src/paperless/tests/test_registry.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestLogSummary.test_log_summary_with_external_parsers.ExtParser]` is not assignable to parameter `object` with type `type[ParserProtocol]` in function `list.append`\n Protocol `ParserProtocol` requires attribute `can_produce_archive`", + "concise_description": "Argument `type[TestLogSummary.test_log_summary_with_external_parsers.ExtParser]` is not assignable to parameter `object` with type `type[ParserProtocol]` in function `list.append`", "severity": "error" }, { @@ -13009,165 +14209,33 @@ "severity": "error" }, { - "line": 42, - "column": 15, - "stop_line": 42, - "stop_column": 39, - "path": "src/paperless/tests/test_websockets.py", + "line": 21, + "column": 21, + "stop_line": 21, + "stop_column": 47, + "path": "src/paperless/tests/test_views.py", "code": -2, "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `group_send`", - "concise_description": "Object of class `NoneType` has no attribute `group_send`", + "description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `streaming_content`", + "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `streaming_content`", "severity": "error" }, { - "line": 53, - "column": 15, - "stop_line": 53, - "stop_column": 39, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `group_send`", - "concise_description": "Object of class `NoneType` has no attribute `group_send`", - "severity": "error" - }, - { - "line": 82, - "column": 15, - "stop_line": 82, - "stop_column": 39, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `group_send`", - "concise_description": "Object of class `NoneType` has no attribute `group_send`", - "severity": "error" - }, - { - "line": 96, - "column": 28, - "stop_line": 96, - "stop_column": 34, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "bad-typed-dict-key", - "description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "severity": "error" - }, - { - "line": 97, - "column": 28, - "stop_line": 97, - "stop_column": 34, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "bad-typed-dict-key", - "description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "severity": "error" - }, - { - "line": 98, - "column": 28, - "stop_line": 98, - "stop_column": 34, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "bad-typed-dict-key", - "description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "severity": "error" - }, - { - "line": 99, - "column": 28, - "stop_line": 99, - "stop_column": 34, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "bad-typed-dict-key", - "description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "severity": "error" - }, - { - "line": 107, - "column": 15, - "stop_line": 107, - "stop_column": 39, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `group_send`", - "concise_description": "Object of class `NoneType` has no attribute `group_send`", - "severity": "error" - }, - { - "line": 115, - "column": 28, - "stop_line": 115, - "stop_column": 34, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "bad-typed-dict-key", - "description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", - "severity": "error" - }, - { - "line": 121, - "column": 15, - "stop_line": 121, - "stop_column": 39, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `group_send`", - "concise_description": "Object of class `NoneType` has no attribute `group_send`", - "severity": "error" - }, - { - "line": 131, - "column": 15, - "stop_line": 131, - "stop_column": 39, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `group_send`", - "concise_description": "Object of class `NoneType` has no attribute `group_send`", - "severity": "error" - }, - { - "line": 150, - "column": 15, - "stop_line": 150, - "stop_column": 39, - "path": "src/paperless/tests/test_websockets.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `group_send`", - "concise_description": "Object of class `NoneType` has no attribute `group_send`", - "severity": "error" - }, - { - "line": 371, + "line": 407, "column": 9, - "stop_line": 371, + "stop_line": 407, "stop_column": 49, "path": "src/paperless/urls.py", "code": -2, "name": "no-matching-overload", - "description": "No matching overload found for function `django.urls.conf.path` called with arguments: (Literal['ws/status/'], _ASGIApplicationProtocol)\n Possible overloads:\n (route: _StrOrPromise, view: (...) -> HttpResponseBase, kwargs: dict[str, Any] = ..., name: str = ...) -> URLPattern [closest match]\n (route: _StrOrPromise, view: (...) -> Coroutine[Any, Any, HttpResponseBase], kwargs: dict[str, Any] = ..., name: str = ...) -> URLPattern\n (route: _StrOrPromise, view: tuple[Sequence[URLPattern | URLResolver], str | None, str | None], kwargs: dict[str, Any] = ..., name: str = ...) -> URLResolver\n (route: _StrOrPromise, view: Sequence[URLResolver | str], kwargs: dict[str, Any] = ..., name: str = ...) -> URLResolver", + "description": "No matching overload found for function `django.urls.conf.path` called with arguments: (Literal['ws/status/'], _ASGIApplicationProtocol)\n Possible overloads:\n (route: _StrOrPromise, view: (...) -> HttpResponseBase, kwargs: dict[str, Any] | None = None, name: str | None = None) -> URLPattern [closest match]\n (route: _StrOrPromise, view: (...) -> Coroutine[Any, Any, HttpResponseBase], kwargs: dict[str, Any] | None = None, name: str | None = None) -> URLPattern\n (route: _StrOrPromise, view: tuple[Sequence[URLPattern | URLResolver], str | None, str | None], kwargs: dict[str, Any] | None = None, name: str | None = None) -> URLResolver\n (route: _StrOrPromise, view: Sequence[URLResolver | str], kwargs: dict[str, Any] | None = None, name: str | None = None) -> URLResolver", "concise_description": "No matching overload found for function `django.urls.conf.path` called with arguments: (Literal['ws/status/'], _ASGIApplicationProtocol)", "severity": "error" }, { - "line": 195, + "line": 199, "column": 20, - "stop_line": 195, + "stop_line": 199, "stop_column": 60, "path": "src/paperless/validators.py", "code": -2, @@ -13177,9 +14245,9 @@ "severity": "error" }, { - "line": 195, + "line": 199, "column": 32, - "stop_line": 195, + "stop_line": 199, "stop_column": 43, "path": "src/paperless/validators.py", "code": -2, @@ -13189,9 +14257,9 @@ "severity": "error" }, { - "line": 201, + "line": 205, "column": 38, - "stop_line": 201, + "stop_line": 205, "stop_column": 58, "path": "src/paperless/validators.py", "code": -2, @@ -13201,9 +14269,9 @@ "severity": "error" }, { - "line": 210, + "line": 214, "column": 38, - "stop_line": 210, + "stop_line": 214, "stop_column": 58, "path": "src/paperless/validators.py", "code": -2, @@ -13213,10 +14281,10 @@ "severity": "error" }, { - "line": 63, - "column": 31, - "stop_line": 63, - "stop_column": 50, + "line": 76, + "column": 23, + "stop_line": 76, + "stop_column": 42, "path": "src/paperless/views.py", "code": -2, "name": "missing-attribute", @@ -13225,9 +14293,9 @@ "severity": "error" }, { - "line": 73, + "line": 91, "column": 17, - "stop_line": 73, + "stop_line": 91, "stop_column": 36, "path": "src/paperless/views.py", "code": -2, @@ -13237,22 +14305,10 @@ "severity": "error" }, { - "line": 80, - "column": 36, - "stop_line": 80, - "stop_column": 70, - "path": "src/paperless/views.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `results`", - "concise_description": "Object of class `NoneType` has no attribute `results`", - "severity": "error" - }, - { - "line": 85, - "column": 19, - "stop_line": 85, - "stop_column": 38, + "line": 94, + "column": 16, + "stop_line": 94, + "stop_column": 35, "path": "src/paperless/views.py", "code": -2, "name": "missing-attribute", @@ -13261,45 +14317,33 @@ "severity": "error" }, { - "line": 86, - "column": 16, - "stop_line": 86, - "stop_column": 19, - "path": "src/paperless/views.py", - "code": -2, - "name": "unbound-name", - "description": "`ids` may be uninitialized", - "concise_description": "`ids` may be uninitialized", - "severity": "error" - }, - { - "line": 121, + "line": 143, "column": 9, - "stop_line": 121, + "stop_line": 143, "stop_column": 15, "path": "src/paperless/views.py", "code": -2, "name": "bad-override", - "description": "Class member `UserViewSet.create` overrides parent class `ModelViewSet` in an inconsistent manner\n `UserViewSet.create` has type `BoundMethod[UserViewSet, (self: UserViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseForbidden | Response]`, which is not assignable to `BoundMethod[UserViewSet, (self: UserViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `ModelViewSet.create`", + "description": "Class member `UserViewSet.create` overrides parent class `ModelViewSet` in an inconsistent manner\n `UserViewSet.create` has type `(self: UserViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseForbidden | Response`, which is not assignable to `(self: UserViewSet, request: Request, *args: Any, **kwargs: Any) -> Response`, the type of `ModelViewSet.create`\n Signature mismatch:\n expected: def create(self: UserViewSet, request: Request, *args: Any, **kwargs: Any) -> Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ return type\n |\n parameters\n found: def create(self: UserViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseForbidden | Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ return type\n |\n parameters", "concise_description": "Class member `UserViewSet.create` overrides parent class `ModelViewSet` in an inconsistent manner", "severity": "error" }, { - "line": 128, + "line": 162, "column": 9, - "stop_line": 128, + "stop_line": 162, "stop_column": 15, "path": "src/paperless/views.py", "code": -2, "name": "bad-override", - "description": "Class member `UserViewSet.update` overrides parent class `ModelViewSet` in an inconsistent manner\n `UserViewSet.update` has type `BoundMethod[UserViewSet, (self: UserViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseForbidden | Response]`, which is not assignable to `BoundMethod[UserViewSet, (self: UserViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `ModelViewSet.update`", + "description": "Class member `UserViewSet.update` overrides parent class `ModelViewSet` in an inconsistent manner\n `UserViewSet.update` has type `(self: UserViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseForbidden | Response`, which is not assignable to `(self: UserViewSet, request: Request, *args: Any, **kwargs: Any) -> Response`, the type of `ModelViewSet.update`\n Signature mismatch:\n expected: def update(self: UserViewSet, request: Request, *args: Any, **kwargs: Any) -> Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ return type\n |\n parameters\n found: def update(self: UserViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseForbidden | Response: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ return type\n |\n parameters", "concise_description": "Class member `UserViewSet.update` overrides parent class `ModelViewSet` in an inconsistent manner", "severity": "error" }, { - "line": 204, + "line": 254, "column": 13, - "stop_line": 204, + "stop_line": 254, "stop_column": 30, "path": "src/paperless/views.py", "code": -2, @@ -13309,9 +14353,9 @@ "severity": "error" }, { - "line": 205, + "line": 255, "column": 13, - "stop_line": 205, + "stop_line": 255, "stop_column": 22, "path": "src/paperless/views.py", "code": -2, @@ -13321,9 +14365,9 @@ "severity": "error" }, { - "line": 209, + "line": 259, "column": 9, - "stop_line": 209, + "stop_line": 259, "stop_column": 18, "path": "src/paperless/views.py", "code": -2, @@ -13333,9 +14377,9 @@ "severity": "error" }, { - "line": 286, + "line": 336, "column": 38, - "stop_line": 286, + "stop_line": 336, "stop_column": 75, "path": "src/paperless/views.py", "code": -2, @@ -13345,9 +14389,9 @@ "severity": "error" }, { - "line": 288, + "line": 338, "column": 34, - "stop_line": 288, + "stop_line": 338, "stop_column": 65, "path": "src/paperless/views.py", "code": -2, @@ -13357,9 +14401,9 @@ "severity": "error" }, { - "line": 366, + "line": 416, "column": 13, - "stop_line": 366, + "stop_line": 416, "stop_column": 36, "path": "src/paperless/views.py", "code": -2, @@ -13369,9 +14413,9 @@ "severity": "error" }, { - "line": 366, + "line": 416, "column": 41, - "stop_line": 366, + "stop_line": 416, "stop_column": 75, "path": "src/paperless/views.py", "code": -2, @@ -13381,9 +14425,9 @@ "severity": "error" }, { - "line": 416, + "line": 465, "column": 23, - "stop_line": 416, + "stop_line": 465, "stop_column": 45, "path": "src/paperless/views.py", "code": -2, @@ -13405,9 +14449,9 @@ "severity": "error" }, { - "line": 103, + "line": 102, "column": 18, - "stop_line": 103, + "stop_line": 102, "stop_column": 46, "path": "src/paperless_ai/chat.py", "code": -2, @@ -13417,9 +14461,9 @@ "severity": "error" }, { - "line": 59, + "line": 79, "column": 16, - "stop_line": 59, + "stop_line": 79, "stop_column": 35, "path": "src/paperless_ai/client.py", "code": -2, @@ -13429,9 +14473,9 @@ "severity": "error" }, { - "line": 86, + "line": 97, "column": 21, - "stop_line": 86, + "stop_line": 97, "stop_column": 38, "path": "src/paperless_ai/embedding.py", "code": -2, @@ -13441,9 +14485,9 @@ "severity": "error" }, { - "line": 241, + "line": 259, "column": 46, - "stop_line": 241, + "stop_line": 259, "stop_column": 51, "path": "src/paperless_ai/indexing.py", "code": -2, @@ -13453,9 +14497,9 @@ "severity": "error" }, { - "line": 254, + "line": 272, "column": 46, - "stop_line": 254, + "stop_line": 272, "stop_column": 51, "path": "src/paperless_ai/indexing.py", "code": -2, @@ -13465,9 +14509,9 @@ "severity": "error" }, { - "line": 305, + "line": 329, "column": 15, - "stop_line": 305, + "stop_line": 329, "stop_column": 20, "path": "src/paperless_ai/indexing.py", "code": -2, @@ -13477,26 +14521,26 @@ "severity": "error" }, { - "line": 49, + "line": 41, "column": 9, - "stop_line": 49, + "stop_line": 41, "stop_column": 30, "path": "src/paperless_ai/tests/test_ai_indexing.py", "code": -2, "name": "bad-override", - "description": "Class member `FakeEmbedding._aget_query_embedding` overrides parent class `BaseEmbedding` in an inconsistent manner\n `FakeEmbedding._aget_query_embedding` has type `BoundMethod[FakeEmbedding, (self: FakeEmbedding, query: str) -> list[float]]`, which is not assignable to `BoundMethod[FakeEmbedding, (self: FakeEmbedding, query: str) -> Coroutine[Unknown, Unknown, list[float]]]`, the type of `BaseEmbedding._aget_query_embedding`", + "description": "Class member `FakeEmbedding._aget_query_embedding` overrides parent class `BaseEmbedding` in an inconsistent manner\n `FakeEmbedding._aget_query_embedding` has type `(self: FakeEmbedding, query: str) -> list[float]`, which is not assignable to `(self: FakeEmbedding, query: str) -> Coroutine[Unknown, Unknown, list[float]]`, the type of `BaseEmbedding._aget_query_embedding`\n Signature mismatch:\n expected: def _aget_query_embedding(self: FakeEmbedding, query: str) -> Coroutine[Unknown, Unknown, list[float]]: ...\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return type\n found: def _aget_query_embedding(self: FakeEmbedding, query: str) -> list[float]: ...\n ^^^^^^^^^^ return type", "concise_description": "Class member `FakeEmbedding._aget_query_embedding` overrides parent class `BaseEmbedding` in an inconsistent manner", "severity": "error" }, { - "line": 95, + "line": 107, "column": 12, - "stop_line": 95, + "stop_line": 107, "stop_column": 27, "path": "src/paperless_ai/tests/test_client.py", "code": -2, "name": "bad-index", - "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['title'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['title'])\n Possible overloads:\n (key: SupportsIndex | slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | Unknown | None], /) -> LiteralString\n (key: SupportsIndex | slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | Unknown | None], /) -> str [closest match]", "concise_description": "Cannot index into `str`", "severity": "error" }, @@ -13585,57 +14629,9 @@ "severity": "error" }, { - "line": 110, - "column": 9, - "stop_line": 110, - "stop_column": 21, - "path": "src/paperless_mail/mail.py", - "code": -2, - "name": "bad-override", - "description": "Class member `DeleteMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `DeleteMailAction.post_consume` has type `BoundMethod[DeleteMailAction, (self: DeleteMailAction, M: MailBox, message_uid: str, parameter: str) -> None]`, which is not assignable to `BoundMethod[DeleteMailAction, (self: DeleteMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", - "concise_description": "Class member `DeleteMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", - "severity": "error" - }, - { - "line": 122, - "column": 9, - "stop_line": 122, - "stop_column": 21, - "path": "src/paperless_mail/mail.py", - "code": -2, - "name": "bad-override", - "description": "Class member `MarkReadMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `MarkReadMailAction.post_consume` has type `BoundMethod[MarkReadMailAction, (self: MarkReadMailAction, M: MailBox, message_uid: str, parameter: str) -> None]`, which is not assignable to `BoundMethod[MarkReadMailAction, (self: MarkReadMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", - "concise_description": "Class member `MarkReadMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", - "severity": "error" - }, - { - "line": 131, - "column": 9, - "stop_line": 131, - "stop_column": 21, - "path": "src/paperless_mail/mail.py", - "code": -2, - "name": "bad-override", - "description": "Class member `MoveMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `MoveMailAction.post_consume` has type `BoundMethod[MoveMailAction, (self: MoveMailAction, M: Unknown, message_uid: Unknown, parameter: Unknown) -> None]`, which is not assignable to `BoundMethod[MoveMailAction, (self: MoveMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", - "concise_description": "Class member `MoveMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", - "severity": "error" - }, - { - "line": 143, - "column": 9, - "stop_line": 143, - "stop_column": 21, - "path": "src/paperless_mail/mail.py", - "code": -2, - "name": "bad-override", - "description": "Class member `FlagMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `FlagMailAction.post_consume` has type `BoundMethod[FlagMailAction, (self: FlagMailAction, M: MailBox, message_uid: str, parameter: str) -> None]`, which is not assignable to `BoundMethod[FlagMailAction, (self: FlagMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", - "concise_description": "Class member `FlagMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", - "severity": "error" - }, - { - "line": 165, + "line": 167, "column": 26, - "stop_line": 165, + "stop_line": 167, "stop_column": 30, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13645,21 +14641,9 @@ "severity": "error" }, { - "line": 180, - "column": 9, - "stop_line": 180, - "stop_column": 21, - "path": "src/paperless_mail/mail.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TagMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `TagMailAction.post_consume` has type `BoundMethod[TagMailAction, (self: TagMailAction, M: MailBox, message_uid: str, parameter: str) -> None]`, which is not assignable to `BoundMethod[TagMailAction, (self: TagMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", - "concise_description": "Class member `TagMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", - "severity": "error" - }, - { - "line": 182, + "line": 184, "column": 64, - "stop_line": 182, + "stop_line": 184, "stop_column": 76, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13669,9 +14653,9 @@ "severity": "error" }, { - "line": 194, + "line": 196, "column": 33, - "stop_line": 194, + "stop_line": 196, "stop_column": 70, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13681,9 +14665,9 @@ "severity": "error" }, { - "line": 272, + "line": 274, "column": 53, - "stop_line": 272, + "stop_line": 274, "stop_column": 74, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13693,9 +14677,9 @@ "severity": "error" }, { - "line": 373, + "line": 375, "column": 13, - "stop_line": 373, + "stop_line": 375, "stop_column": 34, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13704,23 +14688,11 @@ "concise_description": "Argument `str | None` is not assignable to parameter `parameter` with type `str` in function `TagMailAction.__init__`", "severity": "error" }, - { - "line": 390, - "column": 30, - "stop_line": 390, - "stop_column": 46, - "path": "src/paperless_mail/mail.py", - "code": -2, - "name": "unsupported-operation", - "description": "Cannot set item in `dict[str, date]`\n Argument `str` is not assignable to parameter `value` with type `date` in function `dict.__setitem__`", - "concise_description": "Cannot set item in `dict[str, date]`", - "severity": "error" - }, { "line": 392, - "column": 27, + "column": 30, "stop_line": 392, - "stop_column": 41, + "stop_column": 46, "path": "src/paperless_mail/mail.py", "code": -2, "name": "unsupported-operation", @@ -13730,9 +14702,9 @@ }, { "line": 394, - "column": 32, + "column": 27, "stop_line": 394, - "stop_column": 51, + "stop_column": 41, "path": "src/paperless_mail/mail.py", "code": -2, "name": "unsupported-operation", @@ -13742,8 +14714,20 @@ }, { "line": 396, - "column": 29, + "column": 32, "stop_line": 396, + "stop_column": 51, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, date]`\n Argument `str` is not assignable to parameter `value` with type `date` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, date]`", + "severity": "error" + }, + { + "line": 398, + "column": 29, + "stop_line": 398, "stop_column": 45, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13753,9 +14737,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13765,9 +14749,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13777,9 +14761,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13789,9 +14773,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13801,9 +14785,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13813,9 +14797,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13825,9 +14809,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13837,9 +14821,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13849,9 +14833,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13861,9 +14845,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13873,9 +14857,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13885,9 +14869,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13897,9 +14881,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13909,9 +14893,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13921,9 +14905,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13933,9 +14917,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13945,9 +14929,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13957,9 +14941,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13969,9 +14953,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13981,9 +14965,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -13993,9 +14977,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14005,9 +14989,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14017,9 +15001,9 @@ "severity": "error" }, { - "line": 404, + "line": 406, "column": 38, - "stop_line": 404, + "stop_line": 406, "stop_column": 49, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14029,9 +15013,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14041,9 +15025,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14053,9 +15037,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14065,9 +15049,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14077,9 +15061,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14089,9 +15073,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14101,9 +15085,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14113,9 +15097,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14125,9 +15109,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14137,9 +15121,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14149,9 +15133,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14161,9 +15145,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14173,9 +15157,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14185,9 +15169,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14197,9 +15181,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14209,9 +15193,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14221,9 +15205,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14233,9 +15217,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14245,9 +15229,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14257,9 +15241,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14269,9 +15253,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14281,9 +15265,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14293,9 +15277,9 @@ "severity": "error" }, { - "line": 408, + "line": 410, "column": 32, - "stop_line": 408, + "stop_line": 410, "stop_column": 43, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14305,9 +15289,9 @@ "severity": "error" }, { - "line": 427, + "line": 436, "column": 12, - "stop_line": 427, + "stop_line": 436, "stop_column": 19, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14317,9 +15301,9 @@ "severity": "error" }, { - "line": 565, + "line": 575, "column": 54, - "stop_line": 565, + "stop_line": 575, "stop_column": 67, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14329,9 +15313,9 @@ "severity": "error" }, { - "line": 568, + "line": 578, "column": 29, - "stop_line": 568, + "stop_line": 578, "stop_column": 42, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14341,9 +15325,9 @@ "severity": "error" }, { - "line": 607, + "line": 624, "column": 31, - "stop_line": 607, + "stop_line": 624, "stop_column": 52, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14353,9 +15337,9 @@ "severity": "error" }, { - "line": 614, + "line": 631, "column": 44, - "stop_line": 614, + "stop_line": 631, "stop_column": 50, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14365,21 +15349,9 @@ "severity": "error" }, { - "line": 626, + "line": 960, "column": 40, - "stop_line": 626, - "stop_column": 46, - "path": "src/paperless_mail/mail.py", - "code": -2, - "name": "unbound-name", - "description": "`folder` is uninitialized", - "concise_description": "`folder` is uninitialized", - "severity": "error" - }, - { - "line": 926, - "column": 40, - "stop_line": 926, + "stop_line": 960, "stop_column": 60, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14389,9 +15361,9 @@ "severity": "error" }, { - "line": 930, + "line": 964, "column": 32, - "stop_line": 930, + "stop_line": 964, "stop_column": 52, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14401,9 +15373,9 @@ "severity": "error" }, { - "line": 931, + "line": 965, "column": 32, - "stop_line": 931, + "stop_line": 965, "stop_column": 52, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14413,9 +15385,9 @@ "severity": "error" }, { - "line": 932, + "line": 966, "column": 17, - "stop_line": 932, + "stop_line": 966, "stop_column": 37, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14425,9 +15397,9 @@ "severity": "error" }, { - "line": 946, + "line": 980, "column": 27, - "stop_line": 946, + "stop_line": 980, "stop_column": 40, "path": "src/paperless_mail/mail.py", "code": -2, @@ -14472,114 +15444,6 @@ "concise_description": "`result` may be uninitialized", "severity": "error" }, - { - "line": 108, - "column": 41, - "stop_line": 108, - "stop_column": 47, - "path": "src/paperless_mail/oauth.py", - "code": -2, - "name": "unbound-name", - "description": "`result` may be uninitialized", - "concise_description": "`result` may be uninitialized", - "severity": "error" - }, - { - "line": 109, - "column": 32, - "stop_line": 109, - "stop_column": 38, - "path": "src/paperless_mail/oauth.py", - "code": -2, - "name": "unbound-name", - "description": "`result` may be uninitialized", - "concise_description": "`result` may be uninitialized", - "severity": "error" - }, - { - "line": 111, - "column": 25, - "stop_line": 111, - "stop_column": 31, - "path": "src/paperless_mail/oauth.py", - "code": -2, - "name": "unbound-name", - "description": "`result` may be uninitialized", - "concise_description": "`result` may be uninitialized", - "severity": "error" - }, - { - "line": 55, - "column": 9, - "stop_line": 55, - "stop_column": 22, - "path": "src/paperless_mail/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `MailDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner\n `MailDocumentParser.get_thumbnail` has type `BoundMethod[MailDocumentParser, (self: MailDocumentParser, document_path: Path, mime_type: str, file_name: Unknown | None = None) -> Path]`, which is not assignable to `BoundMethod[MailDocumentParser, (self: MailDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.get_thumbnail`", - "concise_description": "Class member `MailDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 125, - "column": 9, - "stop_line": 125, - "stop_column": 14, - "path": "src/paperless_mail/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `MailDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner\n `MailDocumentParser.parse` has type `BoundMethod[MailDocumentParser, (self: MailDocumentParser, document_path: Path, mime_type: str, file_name: Unknown | None = None, mailrule_id: int | None = None) -> None]`, which is not assignable to `BoundMethod[MailDocumentParser, (self: MailDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.parse`", - "concise_description": "Class member `MailDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 151, - "column": 34, - "stop_line": 151, - "stop_column": 63, - "path": "src/paperless_mail/parsers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `full`", - "concise_description": "Object of class `NoneType` has no attribute `full`", - "severity": "error" - }, - { - "line": 192, - "column": 57, - "stop_line": 192, - "stop_column": 72, - "path": "src/paperless_mail/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `int` is not assignable to parameter `pdf_layout` with type `MailRule.PdfLayout | None` in function `MailDocumentParser.generate_pdf`", - "concise_description": "Argument `int` is not assignable to parameter `pdf_layout` with type `MailRule.PdfLayout | None` in function `MailDocumentParser.generate_pdf`", - "severity": "error" - }, - { - "line": 313, - "column": 35, - "stop_line": 313, - "stop_column": 56, - "path": "src/paperless_mail/parsers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `full`", - "concise_description": "Object of class `NoneType` has no attribute `full`", - "severity": "error" - }, - { - "line": 474, - "column": 9, - "stop_line": 474, - "stop_column": 21, - "path": "src/paperless_mail/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `MailDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `MailDocumentParser.get_settings` has type `BoundMethod[MailDocumentParser, (self: MailDocumentParser) -> None]`, which is not assignable to `BoundMethod[MailDocumentParser, (self: MailDocumentParser) -> Never]`, the type of `DocumentParser.get_settings`", - "concise_description": "Class member `MailDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, { "line": 73, "column": 71, @@ -14593,9 +15457,9 @@ "severity": "error" }, { - "line": 27, + "line": 30, "column": 11, - "stop_line": 27, + "stop_line": 30, "stop_column": 15, "path": "src/paperless_mail/serialisers.py", "code": -2, @@ -14605,9 +15469,9 @@ "severity": "error" }, { - "line": 74, + "line": 77, "column": 11, - "stop_line": 74, + "stop_line": 77, "stop_column": 15, "path": "src/paperless_mail/serialisers.py", "code": -2, @@ -14617,9 +15481,9 @@ "severity": "error" }, { - "line": 137, + "line": 153, "column": 11, - "stop_line": 137, + "stop_line": 153, "stop_column": 15, "path": "src/paperless_mail/serialisers.py", "code": -2, @@ -14629,9 +15493,9 @@ "severity": "error" }, { - "line": 55, + "line": 57, "column": 44, - "stop_line": 55, + "stop_line": 57, "stop_column": 48, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14641,9 +15505,9 @@ "severity": "error" }, { - "line": 74, + "line": 76, "column": 37, - "stop_line": 74, + "stop_line": 76, "stop_column": 42, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14653,9 +15517,9 @@ "severity": "error" }, { - "line": 117, + "line": 119, "column": 37, - "stop_line": 117, + "stop_line": 119, "stop_column": 42, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14665,9 +15529,9 @@ "severity": "error" }, { - "line": 122, + "line": 124, "column": 37, - "stop_line": 122, + "stop_line": 124, "stop_column": 42, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14677,9 +15541,9 @@ "severity": "error" }, { - "line": 126, + "line": 128, "column": 37, - "stop_line": 126, + "stop_line": 128, "stop_column": 42, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14689,9 +15553,9 @@ "severity": "error" }, { - "line": 172, + "line": 174, "column": 25, - "stop_line": 172, + "stop_line": 174, "stop_column": 40, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14701,9 +15565,9 @@ "severity": "error" }, { - "line": 174, + "line": 176, "column": 25, - "stop_line": 174, + "stop_line": 176, "stop_column": 37, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14713,9 +15577,9 @@ "severity": "error" }, { - "line": 260, + "line": 262, "column": 9, - "stop_line": 260, + "stop_line": 262, "stop_column": 22, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14725,9 +15589,9 @@ "severity": "error" }, { - "line": 261, + "line": 263, "column": 9, - "stop_line": 261, + "stop_line": 263, "stop_column": 25, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14737,9 +15601,9 @@ "severity": "error" }, { - "line": 419, + "line": 421, "column": 30, - "stop_line": 419, + "stop_line": 421, "stop_column": 43, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14749,9 +15613,9 @@ "severity": "error" }, { - "line": 426, + "line": 428, "column": 31, - "stop_line": 426, + "stop_line": 428, "stop_column": 44, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14761,9 +15625,9 @@ "severity": "error" }, { - "line": 433, + "line": 435, "column": 58, - "stop_line": 433, + "stop_line": 435, "stop_column": 72, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14773,9 +15637,9 @@ "severity": "error" }, { - "line": 442, + "line": 444, "column": 54, - "stop_line": 442, + "stop_line": 444, "stop_column": 61, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14785,9 +15649,9 @@ "severity": "error" }, { - "line": 448, + "line": 450, "column": 40, - "stop_line": 448, + "stop_line": 450, "stop_column": 47, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14797,9 +15661,9 @@ "severity": "error" }, { - "line": 453, + "line": 455, "column": 40, - "stop_line": 453, + "stop_line": 455, "stop_column": 48, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14809,9 +15673,9 @@ "severity": "error" }, { - "line": 462, + "line": 464, "column": 40, - "stop_line": 462, + "stop_line": 464, "stop_column": 47, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14821,9 +15685,9 @@ "severity": "error" }, { - "line": 465, + "line": 467, "column": 40, - "stop_line": 465, + "stop_line": 467, "stop_column": 48, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14833,9 +15697,9 @@ "severity": "error" }, { - "line": 474, + "line": 476, "column": 40, - "stop_line": 474, + "stop_line": 476, "stop_column": 47, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14845,9 +15709,9 @@ "severity": "error" }, { - "line": 478, + "line": 480, "column": 30, - "stop_line": 478, + "stop_line": 480, "stop_column": 43, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14857,9 +15721,9 @@ "severity": "error" }, { - "line": 480, + "line": 482, "column": 26, - "stop_line": 480, + "stop_line": 482, "stop_column": 38, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14869,9 +15733,9 @@ "severity": "error" }, { - "line": 489, + "line": 491, "column": 45, - "stop_line": 489, + "stop_line": 491, "stop_column": 52, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14881,9 +15745,9 @@ "severity": "error" }, { - "line": 489, + "line": 491, "column": 54, - "stop_line": 489, + "stop_line": 491, "stop_column": 57, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14893,9 +15757,9 @@ "severity": "error" }, { - "line": 494, + "line": 496, "column": 45, - "stop_line": 494, + "stop_line": 496, "stop_column": 52, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14905,9 +15769,9 @@ "severity": "error" }, { - "line": 494, + "line": 496, "column": 54, - "stop_line": 494, + "stop_line": 496, "stop_column": 57, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14917,9 +15781,9 @@ "severity": "error" }, { - "line": 499, + "line": 501, "column": 45, - "stop_line": 499, + "stop_line": 501, "stop_column": 52, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14929,9 +15793,9 @@ "severity": "error" }, { - "line": 499, + "line": 501, "column": 54, - "stop_line": 499, + "stop_line": 501, "stop_column": 57, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14941,9 +15805,9 @@ "severity": "error" }, { - "line": 531, + "line": 533, "column": 30, - "stop_line": 531, + "stop_line": 533, "stop_column": 43, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14953,9 +15817,9 @@ "severity": "error" }, { - "line": 1168, + "line": 1246, "column": 9, - "stop_line": 1168, + "stop_line": 1246, "stop_column": 50, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14965,9 +15829,9 @@ "severity": "error" }, { - "line": 1174, + "line": 1252, "column": 9, - "stop_line": 1174, + "stop_line": 1252, "stop_column": 50, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14977,9 +15841,9 @@ "severity": "error" }, { - "line": 1201, + "line": 1279, "column": 9, - "stop_line": 1201, + "stop_line": 1279, "stop_column": 50, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -14989,9 +15853,9 @@ "severity": "error" }, { - "line": 1207, + "line": 1285, "column": 9, - "stop_line": 1207, + "stop_line": 1285, "stop_column": 50, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -15001,9 +15865,9 @@ "severity": "error" }, { - "line": 1269, + "line": 1347, "column": 13, - "stop_line": 1273, + "stop_line": 1351, "stop_column": 14, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -15013,9 +15877,9 @@ "severity": "error" }, { - "line": 1288, + "line": 1366, "column": 13, - "stop_line": 1292, + "stop_line": 1370, "stop_column": 14, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -15025,21 +15889,21 @@ "severity": "error" }, { - "line": 1583, + "line": 1661, "column": 41, - "stop_line": 1583, + "stop_line": 1661, "stop_column": 61, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, "name": "bad-argument-type", - "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", - "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", "severity": "error" }, { - "line": 1886, + "line": 2070, "column": 26, - "stop_line": 1886, + "stop_line": 2070, "stop_column": 35, "path": "src/paperless_mail/tests/test_mail.py", "code": -2, @@ -15096,66 +15960,6 @@ "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", "severity": "error" }, - { - "line": 110, - "column": 45, - "stop_line": 110, - "stop_column": 49, - "path": "src/paperless_mail/tests/test_parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Literal['na']` is not assignable to parameter `document_path` with type `Path` in function `paperless_mail.parsers.MailDocumentParser.extract_metadata`", - "concise_description": "Argument `Literal['na']` is not assignable to parameter `document_path` with type `Path` in function `paperless_mail.parsers.MailDocumentParser.extract_metadata`", - "severity": "error" - }, - { - "line": 315, - "column": 47, - "stop_line": 315, - "stop_column": 75, - "path": "src/paperless_mail/tests/test_parsers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `url`", - "concise_description": "Object of class `NoneType` has no attribute `url`", - "severity": "error" - }, - { - "line": 669, - "column": 20, - "stop_line": 669, - "stop_column": 31, - "path": "src/paperless_mail/tests/test_parsers.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `url`", - "concise_description": "Object of class `NoneType` has no attribute `url`", - "severity": "error" - }, - { - "line": 25, - "column": 23, - "stop_line": 36, - "stop_column": 10, - "path": "src/paperless_mail/tests/test_parsers_live.py", - "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], check=Literal[True])\n Possible overloads:\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: Literal[True], timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, *, universal_newlines: Literal[True], startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: Literal[False] | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: None = None, errors: None = None, input: Buffer | None = None, text: Literal[False] | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[bytes] [closest match]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: Buffer | str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[Any]", - "concise_description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], check=Literal[True])", - "severity": "error" - }, - { - "line": 264, - "column": 37, - "stop_line": 264, - "stop_column": 49, - "path": "src/paperless_mail/tests/test_parsers_live.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `pdf_path` with type `Path` in function `extract_text`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `pdf_path` with type `Path` in function `extract_text`", - "severity": "error" - }, { "line": 70, "column": 9, @@ -15205,45 +16009,9 @@ "severity": "error" }, { - "line": 114, - "column": 66, - "stop_line": 114, - "stop_column": 82, - "path": "src/paperless_mail/views.py", - "code": -2, - "name": "unbound-name", - "description": "`existing_account` may be uninitialized", - "concise_description": "`existing_account` may be uninitialized", - "severity": "error" - }, - { - "line": 116, - "column": 25, - "stop_line": 116, - "stop_column": 41, - "path": "src/paperless_mail/views.py", - "code": -2, - "name": "unbound-name", - "description": "`existing_account` may be uninitialized", - "concise_description": "`existing_account` may be uninitialized", - "severity": "error" - }, - { - "line": 117, - "column": 44, - "stop_line": 117, - "stop_column": 60, - "path": "src/paperless_mail/views.py", - "code": -2, - "name": "unbound-name", - "description": "`existing_account` may be uninitialized", - "concise_description": "`existing_account` may be uninitialized", - "severity": "error" - }, - { - "line": 242, + "line": 268, "column": 28, - "stop_line": 242, + "stop_line": 268, "stop_column": 34, "path": "src/paperless_mail/views.py", "code": -2, @@ -15253,33 +16021,9 @@ "severity": "error" }, { - "line": 243, + "line": 274, "column": 29, - "stop_line": 243, - "stop_column": 35, - "path": "src/paperless_mail/views.py", - "code": -2, - "name": "unbound-name", - "description": "`result` may be uninitialized", - "concise_description": "`result` may be uninitialized", - "severity": "error" - }, - { - "line": 244, - "column": 26, - "stop_line": 244, - "stop_column": 32, - "path": "src/paperless_mail/views.py", - "code": -2, - "name": "unbound-name", - "description": "`result` may be uninitialized", - "concise_description": "`result` may be uninitialized", - "severity": "error" - }, - { - "line": 248, - "column": 29, - "stop_line": 248, + "stop_line": 274, "stop_column": 40, "path": "src/paperless_mail/views.py", "code": -2, @@ -15289,9 +16033,9 @@ "severity": "error" }, { - "line": 251, + "line": 278, "column": 26, - "stop_line": 251, + "stop_line": 278, "stop_column": 34, "path": "src/paperless_mail/views.py", "code": -2, @@ -15299,2070 +16043,6 @@ "description": "`defaults` may be uninitialized", "concise_description": "`defaults` may be uninitialized", "severity": "error" - }, - { - "line": 34, - "column": 9, - "stop_line": 34, - "stop_column": 21, - "path": "src/paperless_remote/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `RemoteDocumentParser.get_settings` overrides parent class `RasterisedDocumentParser` in an inconsistent manner\n `RemoteDocumentParser.get_settings` has type `BoundMethod[RemoteDocumentParser, (self: RemoteDocumentParser) -> RemoteEngineConfig]`, which is not assignable to `BoundMethod[RemoteDocumentParser, (self: RemoteDocumentParser) -> OcrConfig]`, the type of `RasterisedDocumentParser.get_settings`", - "concise_description": "Class member `RemoteDocumentParser.get_settings` overrides parent class `RasterisedDocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 67, - "column": 17, - "stop_line": 67, - "stop_column": 34, - "path": "src/paperless_remote/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `strip`", - "concise_description": "Object of class `NoneType` has no attribute `strip`", - "severity": "error" - }, - { - "line": 11, - "column": 26, - "stop_line": 14, - "stop_column": 6, - "path": "src/paperless_tesseract/checks.py", - "code": -2, - "name": "no-matching-overload", - "description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], capture_output=Literal[True])\n Possible overloads:\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: Literal[True], timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, *, universal_newlines: Literal[True], startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: Literal[False] | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: None = None, errors: None = None, input: Buffer | None = None, text: Literal[False] | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[bytes] [closest match]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: Buffer | str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[Any]", - "concise_description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], capture_output=Literal[True])", - "severity": "error" - }, - { - "line": 28, - "column": 13, - "stop_line": 31, - "stop_column": 14, - "path": "src/paperless_tesseract/checks.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", - "concise_description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", - "severity": "error" - }, - { - "line": 45, - "column": 21, - "stop_line": 49, - "stop_column": 22, - "path": "src/paperless_tesseract/checks.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Error` is not assignable to parameter `object` with type `Warning` in function `list.append`", - "concise_description": "Argument `Error` is not assignable to parameter `object` with type `Warning` in function `list.append`", - "severity": "error" - }, - { - "line": 37, - "column": 9, - "stop_line": 37, - "stop_column": 21, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `RasterisedDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `RasterisedDocumentParser.get_settings` has type `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser) -> OcrConfig]`, which is not assignable to `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser) -> Never]`, the type of `DocumentParser.get_settings`", - "concise_description": "Class member `RasterisedDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 43, - "column": 9, - "stop_line": 43, - "stop_column": 23, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `RasterisedDocumentParser.get_page_count` overrides parent class `DocumentParser` in an inconsistent manner\n `RasterisedDocumentParser.get_page_count` has type `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown) -> int | None]`, which is not assignable to `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown) -> None]`, the type of `DocumentParser.get_page_count`", - "concise_description": "Class member `RasterisedDocumentParser.get_page_count` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 96, - "column": 9, - "stop_line": 96, - "stop_column": 22, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `RasterisedDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner\n `RasterisedDocumentParser.get_thumbnail` has type `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Path]`, which is not assignable to `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.get_thumbnail`", - "concise_description": "Class member `RasterisedDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 121, - "column": 13, - "stop_line": 127, - "stop_column": 14, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", - "concise_description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", - "severity": "error" - }, - { - "line": 128, - "column": 20, - "stop_line": 128, - "stop_column": 28, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", - "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", - "severity": "error" - }, - { - "line": 188, - "column": 21, - "stop_line": 196, - "stop_column": 22, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", - "concise_description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", - "severity": "error" - }, - { - "line": 197, - "column": 28, - "stop_line": 197, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", - "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", - "severity": "error" - }, - { - "line": 333, - "column": 9, - "stop_line": 333, - "stop_column": 14, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `RasterisedDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner\n `RasterisedDocumentParser.parse` has type `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Path, mime_type: Unknown, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.parse`", - "concise_description": "Class member `RasterisedDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `input_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `input_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `language` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `language` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_type` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_type` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `sidecar` with type `BinaryIO | Path | bytes | str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `sidecar` with type `BinaryIO | Path | bytes | str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `title` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `title` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `author` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `author` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `subject` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `subject` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `keywords` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `keywords` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `unpaper_args` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `unpaper_args` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pages` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pages` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `tesseract_config` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `tesseract_config` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdf_renderer` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdf_renderer` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdfa_image_compression` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdfa_image_compression` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `color_conversion_strategy` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `color_conversion_strategy` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_words` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_words` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_patterns` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_patterns` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 384, - "column": 26, - "stop_line": 384, - "stop_column": 32, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `plugins` with type `Iterable[Path | str] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `plugins` with type `Iterable[Path | str] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `input_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `input_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `language` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `language` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_type` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_type` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `sidecar` with type `BinaryIO | Path | bytes | str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `sidecar` with type `BinaryIO | Path | bytes | str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `title` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `title` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `author` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `author` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `subject` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `subject` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `keywords` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `keywords` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `unpaper_args` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `unpaper_args` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pages` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pages` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `tesseract_config` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `tesseract_config` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdf_renderer` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdf_renderer` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdfa_image_compression` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdfa_image_compression` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `color_conversion_strategy` with type `str | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `color_conversion_strategy` with type `str | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_words` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_words` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_patterns` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_patterns` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 431, - "column": 30, - "stop_line": 431, - "stop_column": 36, - "path": "src/paperless_tesseract/parsers.py", - "code": -2, - "name": "bad-argument-type", - "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `plugins` with type `Iterable[Path | str] | None` in function `ocrmypdf.api.ocr`", - "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `plugins` with type `Iterable[Path | str] | None` in function `ocrmypdf.api.ocr`", - "severity": "error" - }, - { - "line": 57, - "column": 36, - "stop_line": 57, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `strip`", - "concise_description": "Object of class `NoneType` has no attribute `strip`", - "severity": "error" - }, - { - "line": 147, - "column": 13, - "stop_line": 147, - "stop_column": 58, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 151, - "column": 27, - "stop_line": 151, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 159, - "column": 13, - "stop_line": 159, - "stop_column": 53, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 163, - "column": 27, - "stop_line": 163, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 175, - "column": 13, - "stop_line": 175, - "stop_column": 53, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 189, - "column": 22, - "stop_line": 189, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 205, - "column": 13, - "stop_line": 205, - "stop_column": 53, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 216, - "column": 13, - "stop_line": 216, - "stop_column": 53, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 230, - "column": 13, - "stop_line": 230, - "stop_column": 53, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 242, - "column": 22, - "stop_line": 242, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 244, - "column": 27, - "stop_line": 244, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 258, - "column": 26, - "stop_line": 258, - "stop_column": 40, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 260, - "column": 31, - "stop_line": 260, - "stop_column": 50, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 280, - "column": 17, - "stop_line": 280, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 290, - "column": 22, - "stop_line": 290, - "stop_column": 66, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 292, - "column": 27, - "stop_line": 292, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 295, - "column": 13, - "stop_line": 295, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 302, - "column": 13, - "stop_line": 302, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 305, - "column": 27, - "stop_line": 305, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 307, - "column": 13, - "stop_line": 307, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 315, - "column": 13, - "stop_line": 315, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 318, - "column": 27, - "stop_line": 318, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 320, - "column": 13, - "stop_line": 320, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 328, - "column": 13, - "stop_line": 328, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 331, - "column": 27, - "stop_line": 331, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 333, - "column": 13, - "stop_line": 333, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 341, - "column": 13, - "stop_line": 341, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 344, - "column": 27, - "stop_line": 344, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 346, - "column": 13, - "stop_line": 346, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 354, - "column": 13, - "stop_line": 354, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 357, - "column": 27, - "stop_line": 357, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 359, - "column": 13, - "stop_line": 359, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 378, - "column": 13, - "stop_line": 378, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 381, - "column": 27, - "stop_line": 381, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 382, - "column": 36, - "stop_line": 382, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 383, - "column": 36, - "stop_line": 383, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 400, - "column": 13, - "stop_line": 400, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 403, - "column": 27, - "stop_line": 403, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 404, - "column": 36, - "stop_line": 404, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 405, - "column": 36, - "stop_line": 405, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 406, - "column": 36, - "stop_line": 406, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 422, - "column": 13, - "stop_line": 422, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 427, - "column": 13, - "stop_line": 427, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 445, - "column": 13, - "stop_line": 445, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 450, - "column": 13, - "stop_line": 450, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 470, - "column": 13, - "stop_line": 470, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 475, - "column": 13, - "stop_line": 475, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 493, - "column": 13, - "stop_line": 493, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 498, - "column": 13, - "stop_line": 498, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 516, - "column": 13, - "stop_line": 516, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 521, - "column": 13, - "stop_line": 521, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 539, - "column": 13, - "stop_line": 539, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 544, - "column": 13, - "stop_line": 544, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 562, - "column": 13, - "stop_line": 562, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 567, - "column": 13, - "stop_line": 567, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 585, - "column": 13, - "stop_line": 585, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 590, - "column": 13, - "stop_line": 590, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 608, - "column": 13, - "stop_line": 608, - "stop_column": 60, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 614, - "column": 13, - "stop_line": 614, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 639, - "column": 13, - "stop_line": 639, - "stop_column": 61, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 645, - "column": 13, - "stop_line": 645, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 676, - "column": 13, - "stop_line": 676, - "stop_column": 60, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 681, - "column": 13, - "stop_line": 681, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 688, - "column": 22, - "stop_line": 688, - "stop_column": 60, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 710, - "column": 13, - "stop_line": 710, - "stop_column": 62, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 713, - "column": 27, - "stop_line": 713, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 715, - "column": 13, - "stop_line": 715, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 734, - "column": 17, - "stop_line": 734, - "stop_column": 30, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 737, - "column": 31, - "stop_line": 737, - "stop_column": 50, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 739, - "column": 17, - "stop_line": 739, - "stop_column": 40, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 761, - "column": 17, - "stop_line": 761, - "stop_column": 30, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 764, - "column": 31, - "stop_line": 764, - "stop_column": 50, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 766, - "column": 17, - "stop_line": 766, - "stop_column": 40, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 846, - "column": 13, - "stop_line": 846, - "stop_column": 52, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 851, - "column": 40, - "stop_line": 851, - "stop_column": 57, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", - "severity": "error" - }, - { - "line": 871, - "column": 22, - "stop_line": 871, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 872, - "column": 27, - "stop_line": 872, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 873, - "column": 50, - "stop_line": 873, - "stop_column": 73, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 877, - "column": 22, - "stop_line": 877, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 878, - "column": 27, - "stop_line": 878, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 879, - "column": 50, - "stop_line": 879, - "stop_column": 73, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 883, - "column": 22, - "stop_line": 883, - "stop_column": 60, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 884, - "column": 27, - "stop_line": 884, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 885, - "column": 32, - "stop_line": 885, - "stop_column": 55, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 890, - "column": 22, - "stop_line": 890, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 891, - "column": 27, - "stop_line": 891, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 892, - "column": 50, - "stop_line": 892, - "stop_column": 73, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 896, - "column": 22, - "stop_line": 896, - "stop_column": 59, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 897, - "column": 27, - "stop_line": 897, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 898, - "column": 50, - "stop_line": 898, - "stop_column": 73, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 904, - "column": 13, - "stop_line": 904, - "stop_column": 53, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", - "severity": "error" - }, - { - "line": 907, - "column": 27, - "stop_line": 907, - "stop_column": 46, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "bad-argument-type", - "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", - "severity": "error" - }, - { - "line": 911, - "column": 13, - "stop_line": 911, - "stop_column": 36, - "path": "src/paperless_tesseract/tests/test_parser.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `lower`", - "concise_description": "Object of class `NoneType` has no attribute `lower`", - "severity": "error" - }, - { - "line": 42, - "column": 13, - "stop_line": 42, - "stop_column": 27, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `pages`", - "concise_description": "Object of class `NoneType` has no attribute `pages`", - "severity": "error" - }, - { - "line": 43, - "column": 13, - "stop_line": 43, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 60, - "column": 13, - "stop_line": 60, - "stop_column": 30, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `language`", - "concise_description": "Object of class `NoneType` has no attribute `language`", - "severity": "error" - }, - { - "line": 61, - "column": 13, - "stop_line": 61, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 78, - "column": 13, - "stop_line": 78, - "stop_column": 33, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `output_type`", - "concise_description": "Object of class `NoneType` has no attribute `output_type`", - "severity": "error" - }, - { - "line": 79, - "column": 13, - "stop_line": 79, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 96, - "column": 13, - "stop_line": 96, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `mode`", - "concise_description": "Object of class `NoneType` has no attribute `mode`", - "severity": "error" - }, - { - "line": 97, - "column": 13, - "stop_line": 97, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 116, - "column": 13, - "stop_line": 116, - "stop_column": 35, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `unpaper_clean`", - "concise_description": "Object of class `NoneType` has no attribute `unpaper_clean`", - "severity": "error" - }, - { - "line": 117, - "column": 13, - "stop_line": 117, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 125, - "column": 13, - "stop_line": 125, - "stop_column": 35, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `unpaper_clean`", - "concise_description": "Object of class `NoneType` has no attribute `unpaper_clean`", - "severity": "error" - }, - { - "line": 126, - "column": 13, - "stop_line": 126, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 144, - "column": 13, - "stop_line": 144, - "stop_column": 28, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `deskew`", - "concise_description": "Object of class `NoneType` has no attribute `deskew`", - "severity": "error" - }, - { - "line": 145, - "column": 13, - "stop_line": 145, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 162, - "column": 13, - "stop_line": 162, - "stop_column": 34, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `rotate_pages`", - "concise_description": "Object of class `NoneType` has no attribute `rotate_pages`", - "severity": "error" - }, - { - "line": 163, - "column": 13, - "stop_line": 163, - "stop_column": 44, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `rotate_pages_threshold`", - "concise_description": "Object of class `NoneType` has no attribute `rotate_pages_threshold`", - "severity": "error" - }, - { - "line": 164, - "column": 13, - "stop_line": 164, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 182, - "column": 13, - "stop_line": 182, - "stop_column": 38, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `max_image_pixels`", - "concise_description": "Object of class `NoneType` has no attribute `max_image_pixels`", - "severity": "error" - }, - { - "line": 183, - "column": 13, - "stop_line": 183, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 200, - "column": 13, - "stop_line": 200, - "stop_column": 47, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `color_conversion_strategy`", - "concise_description": "Object of class `NoneType` has no attribute `color_conversion_strategy`", - "severity": "error" - }, - { - "line": 201, - "column": 13, - "stop_line": 201, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 223, - "column": 13, - "stop_line": 223, - "stop_column": 31, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `user_args`", - "concise_description": "Object of class `NoneType` has no attribute `user_args`", - "severity": "error" - }, - { - "line": 224, - "column": 13, - "stop_line": 224, - "stop_column": 26, - "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", - "code": -2, - "name": "missing-attribute", - "description": "Object of class `NoneType` has no attribute `save`", - "concise_description": "Object of class `NoneType` has no attribute `save`", - "severity": "error" - }, - { - "line": 18, - "column": 9, - "stop_line": 18, - "stop_column": 22, - "path": "src/paperless_text/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TextDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner\n `TextDocumentParser.get_thumbnail` has type `BoundMethod[TextDocumentParser, (self: TextDocumentParser, document_path: Path, mime_type: Unknown, file_name: Unknown | None = None) -> Path]`, which is not assignable to `BoundMethod[TextDocumentParser, (self: TextDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.get_thumbnail`", - "concise_description": "Class member `TextDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 43, - "column": 9, - "stop_line": 43, - "stop_column": 14, - "path": "src/paperless_text/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TextDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner\n `TextDocumentParser.parse` has type `BoundMethod[TextDocumentParser, (self: TextDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[TextDocumentParser, (self: TextDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.parse`", - "concise_description": "Class member `TextDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 46, - "column": 9, - "stop_line": 46, - "stop_column": 21, - "path": "src/paperless_text/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TextDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `TextDocumentParser.get_settings` has type `BoundMethod[TextDocumentParser, (self: TextDocumentParser) -> None]`, which is not assignable to `BoundMethod[TextDocumentParser, (self: TextDocumentParser) -> Never]`, the type of `DocumentParser.get_settings`", - "concise_description": "Class member `TextDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 24, - "column": 9, - "stop_line": 24, - "stop_column": 22, - "path": "src/paperless_tika/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TikaDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner\n `TikaDocumentParser.get_thumbnail` has type `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Path]`, which is not assignable to `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.get_thumbnail`", - "concise_description": "Class member `TikaDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 56, - "column": 9, - "stop_line": 56, - "stop_column": 14, - "path": "src/paperless_tika/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TikaDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner\n `TikaDocumentParser.parse` has type `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser, document_path: Path, mime_type: str, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.parse`", - "concise_description": "Class member `TikaDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" - }, - { - "line": 132, - "column": 9, - "stop_line": 132, - "stop_column": 21, - "path": "src/paperless_tika/parsers.py", - "code": -2, - "name": "bad-override", - "description": "Class member `TikaDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `TikaDocumentParser.get_settings` has type `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser) -> OutputTypeConfig]`, which is not assignable to `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser) -> Never]`, the type of `DocumentParser.get_settings`", - "concise_description": "Class member `TikaDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", - "severity": "error" } ] } diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index 9a026ba54..5615cc927 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -100,7 +100,7 @@ logger = logging.getLogger("paperless.serializers") # https://www.django-rest-framework.org/api-guide/serializers/#example -class DynamicFieldsModelSerializer(serializers.ModelSerializer): +class DynamicFieldsModelSerializer(serializers.ModelSerializer[Any]): """ A ModelSerializer that takes an additional `fields` argument that controls which fields should be displayed. @@ -121,7 +121,7 @@ class DynamicFieldsModelSerializer(serializers.ModelSerializer): self.fields.pop(field_name) -class MatchingModelSerializer(serializers.ModelSerializer): +class MatchingModelSerializer(serializers.ModelSerializer[Any]): document_count = serializers.IntegerField(read_only=True) def get_slug(self, obj) -> str: @@ -261,7 +261,7 @@ class SetPermissionsSerializer(serializers.DictField): class OwnedObjectSerializer( SerializerWithPerms, - serializers.ModelSerializer, + serializers.ModelSerializer[Any], SetPermissionsMixin, ): def __init__(self, *args, **kwargs) -> None: @@ -469,7 +469,7 @@ class OwnedObjectSerializer( return super().update(instance, validated_data) -class OwnedObjectListSerializer(serializers.ListSerializer): +class OwnedObjectListSerializer(serializers.ListSerializer[Any]): def to_representation(self, documents): self.child.context["shared_object_pks"] = self.child.get_shared_object_pks( documents, @@ -682,27 +682,27 @@ class TagSerializer(MatchingModelSerializer, OwnedObjectSerializer): return super().validate(attrs) -class CorrespondentField(serializers.PrimaryKeyRelatedField): +class CorrespondentField(serializers.PrimaryKeyRelatedField[Correspondent]): def get_queryset(self): return Correspondent.objects.all() -class TagsField(serializers.PrimaryKeyRelatedField): +class TagsField(serializers.PrimaryKeyRelatedField[Tag]): def get_queryset(self): return Tag.objects.all() -class DocumentTypeField(serializers.PrimaryKeyRelatedField): +class DocumentTypeField(serializers.PrimaryKeyRelatedField[DocumentType]): def get_queryset(self): return DocumentType.objects.all() -class StoragePathField(serializers.PrimaryKeyRelatedField): +class StoragePathField(serializers.PrimaryKeyRelatedField[StoragePath]): def get_queryset(self): return StoragePath.objects.all() -class CustomFieldSerializer(serializers.ModelSerializer): +class CustomFieldSerializer(serializers.ModelSerializer[CustomField]): data_type = serializers.ChoiceField( choices=CustomField.FieldDataType, read_only=False, @@ -816,7 +816,7 @@ def validate_documentlink_targets(user, doc_ids): ) -class CustomFieldInstanceSerializer(serializers.ModelSerializer): +class CustomFieldInstanceSerializer(serializers.ModelSerializer[CustomFieldInstance]): field = serializers.PrimaryKeyRelatedField(queryset=CustomField.objects.all()) value = ReadWriteSerializerMethodField(allow_null=True) @@ -922,14 +922,14 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer): ] -class BasicUserSerializer(serializers.ModelSerializer): +class BasicUserSerializer(serializers.ModelSerializer[User]): # Different than paperless.serializers.UserSerializer class Meta: model = User fields = ["id", "username", "first_name", "last_name"] -class NotesSerializer(serializers.ModelSerializer): +class NotesSerializer(serializers.ModelSerializer[Note]): user = BasicUserSerializer(read_only=True) class Meta: @@ -1256,7 +1256,7 @@ class DocumentSerializer( list_serializer_class = OwnedObjectListSerializer -class SearchResultListSerializer(serializers.ListSerializer): +class SearchResultListSerializer(serializers.ListSerializer[Document]): def to_representation(self, hits): document_ids = [hit["id"] for hit in hits] # Fetch all Document objects in the list in one SQL query. @@ -1313,7 +1313,7 @@ class SearchResultSerializer(DocumentSerializer): list_serializer_class = SearchResultListSerializer -class SavedViewFilterRuleSerializer(serializers.ModelSerializer): +class SavedViewFilterRuleSerializer(serializers.ModelSerializer[SavedViewFilterRule]): class Meta: model = SavedViewFilterRule fields = ["rule_type", "value"] @@ -2401,7 +2401,7 @@ class StoragePathSerializer(MatchingModelSerializer, OwnedObjectSerializer): return super().update(instance, validated_data) -class UiSettingsViewSerializer(serializers.ModelSerializer): +class UiSettingsViewSerializer(serializers.ModelSerializer[UiSettings]): settings = serializers.DictField(required=False, allow_null=True) class Meta: @@ -2760,7 +2760,7 @@ class BulkEditObjectsSerializer(SerializerWithPerms, SetPermissionsMixin): return attrs -class WorkflowTriggerSerializer(serializers.ModelSerializer): +class WorkflowTriggerSerializer(serializers.ModelSerializer[WorkflowTrigger]): id = serializers.IntegerField(required=False, allow_null=True) sources = fields.MultipleChoiceField( choices=WorkflowTrigger.DocumentSourceChoices.choices, @@ -2870,7 +2870,7 @@ class WorkflowTriggerSerializer(serializers.ModelSerializer): return super().update(instance, validated_data) -class WorkflowActionEmailSerializer(serializers.ModelSerializer): +class WorkflowActionEmailSerializer(serializers.ModelSerializer[WorkflowActionEmail]): id = serializers.IntegerField(allow_null=True, required=False) class Meta: @@ -2884,7 +2884,9 @@ class WorkflowActionEmailSerializer(serializers.ModelSerializer): ] -class WorkflowActionWebhookSerializer(serializers.ModelSerializer): +class WorkflowActionWebhookSerializer( + serializers.ModelSerializer[WorkflowActionWebhook], +): id = serializers.IntegerField(allow_null=True, required=False) def validate_url(self, url): @@ -2905,7 +2907,7 @@ class WorkflowActionWebhookSerializer(serializers.ModelSerializer): ] -class WorkflowActionSerializer(serializers.ModelSerializer): +class WorkflowActionSerializer(serializers.ModelSerializer[WorkflowAction]): id = serializers.IntegerField(required=False, allow_null=True) assign_correspondent = CorrespondentField(allow_null=True, required=False) assign_tags = TagsField(many=True, allow_null=True, required=False) @@ -3027,7 +3029,7 @@ class WorkflowActionSerializer(serializers.ModelSerializer): return attrs -class WorkflowSerializer(serializers.ModelSerializer): +class WorkflowSerializer(serializers.ModelSerializer[Workflow]): order = serializers.IntegerField(required=False) triggers = WorkflowTriggerSerializer(many=True) diff --git a/src/documents/views.py b/src/documents/views.py index 8d86aa776..60e9f008d 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -291,7 +291,7 @@ class IndexView(TemplateView): return context -class PassUserMixin(GenericAPIView): +class PassUserMixin(GenericAPIView[Any]): """ Pass a user object to serializer """ @@ -457,7 +457,10 @@ class PermissionsAwareDocumentCountMixin(BulkPermissionMixin, PassUserMixin): @extend_schema_view(**generate_object_with_permissions_schema(CorrespondentSerializer)) -class CorrespondentViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): +class CorrespondentViewSet( + PermissionsAwareDocumentCountMixin, + ModelViewSet[Correspondent], +): model = Correspondent queryset = Correspondent.objects.select_related("owner").order_by(Lower("name")) @@ -494,7 +497,7 @@ class CorrespondentViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): @extend_schema_view(**generate_object_with_permissions_schema(TagSerializer)) -class TagViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): +class TagViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet[Tag]): model = Tag serializer_class = TagSerializer document_count_through = Document.tags.through @@ -573,7 +576,10 @@ class TagViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): @extend_schema_view(**generate_object_with_permissions_schema(DocumentTypeSerializer)) -class DocumentTypeViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): +class DocumentTypeViewSet( + PermissionsAwareDocumentCountMixin, + ModelViewSet[DocumentType], +): model = DocumentType queryset = DocumentType.objects.select_related("owner").order_by(Lower("name")) @@ -808,7 +814,7 @@ class DocumentViewSet( UpdateModelMixin, DestroyModelMixin, ListModelMixin, - GenericViewSet, + GenericViewSet[Document], ): model = Document queryset = Document.objects.all() @@ -1955,7 +1961,7 @@ class ChatStreamingSerializer(serializers.Serializer): ], name="dispatch", ) -class ChatStreamingView(GenericAPIView): +class ChatStreamingView(GenericAPIView[Any]): permission_classes = (IsAuthenticated,) serializer_class = ChatStreamingSerializer @@ -2281,7 +2287,7 @@ class LogViewSet(ViewSet): @extend_schema_view(**generate_object_with_permissions_schema(SavedViewSerializer)) -class SavedViewViewSet(BulkPermissionMixin, PassUserMixin, ModelViewSet): +class SavedViewViewSet(BulkPermissionMixin, PassUserMixin, ModelViewSet[SavedView]): model = SavedView queryset = SavedView.objects.select_related("owner").prefetch_related( @@ -2759,7 +2765,7 @@ class RemovePasswordDocumentsView(DocumentOperationPermissionMixin): }, ), ) -class PostDocumentView(GenericAPIView): +class PostDocumentView(GenericAPIView[Any]): permission_classes = (IsAuthenticated,) serializer_class = PostDocumentSerializer parser_classes = (parsers.MultiPartParser,) @@ -2880,7 +2886,7 @@ class PostDocumentView(GenericAPIView): }, ), ) -class SelectionDataView(GenericAPIView): +class SelectionDataView(GenericAPIView[Any]): permission_classes = (IsAuthenticated,) serializer_class = DocumentListSerializer parser_classes = (parsers.MultiPartParser, parsers.JSONParser) @@ -2984,7 +2990,7 @@ class SelectionDataView(GenericAPIView): }, ), ) -class SearchAutoCompleteView(GenericAPIView): +class SearchAutoCompleteView(GenericAPIView[Any]): permission_classes = (IsAuthenticated,) def get(self, request, format=None): @@ -3265,7 +3271,7 @@ class GlobalSearchView(PassUserMixin): }, ), ) -class StatisticsView(GenericAPIView): +class StatisticsView(GenericAPIView[Any]): permission_classes = (IsAuthenticated,) def get(self, request, format=None): @@ -3367,7 +3373,7 @@ class StatisticsView(GenericAPIView): ) -class BulkDownloadView(DocumentSelectionMixin, GenericAPIView): +class BulkDownloadView(DocumentSelectionMixin, GenericAPIView[Any]): permission_classes = (IsAuthenticated,) serializer_class = BulkDownloadSerializer parser_classes = (parsers.JSONParser,) @@ -3420,7 +3426,7 @@ class BulkDownloadView(DocumentSelectionMixin, GenericAPIView): @extend_schema_view(**generate_object_with_permissions_schema(StoragePathSerializer)) -class StoragePathViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): +class StoragePathViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet[StoragePath]): model = StoragePath queryset = StoragePath.objects.select_related("owner").order_by( @@ -3484,7 +3490,7 @@ class StoragePathViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): return Response(result) -class UiSettingsView(GenericAPIView): +class UiSettingsView(GenericAPIView[Any]): queryset = UiSettings.objects.all() permission_classes = (IsAuthenticated, PaperlessObjectPermissions) serializer_class = UiSettingsViewSerializer @@ -3582,7 +3588,7 @@ class UiSettingsView(GenericAPIView): }, ), ) -class RemoteVersionView(GenericAPIView): +class RemoteVersionView(GenericAPIView[Any]): cache_key = "remote_version_view_latest_release" def get(self, request, format=None): @@ -3659,7 +3665,7 @@ class RemoteVersionView(GenericAPIView): ), ], ) -class TasksViewSet(ReadOnlyModelViewSet): +class TasksViewSet(ReadOnlyModelViewSet[PaperlessTask]): permission_classes = (IsAuthenticated, PaperlessObjectPermissions) serializer_class = TasksViewSerializer filter_backends = ( @@ -3733,7 +3739,7 @@ class TasksViewSet(ReadOnlyModelViewSet): ) -class ShareLinkViewSet(ModelViewSet, PassUserMixin): +class ShareLinkViewSet(PassUserMixin, ModelViewSet[ShareLink]): model = ShareLink queryset = ShareLink.objects.all() @@ -3750,7 +3756,7 @@ class ShareLinkViewSet(ModelViewSet, PassUserMixin): ordering_fields = ("created", "expiration", "document") -class ShareLinkBundleViewSet(ModelViewSet, PassUserMixin): +class ShareLinkBundleViewSet(PassUserMixin, ModelViewSet[ShareLinkBundle]): model = ShareLinkBundle queryset = ShareLinkBundle.objects.all() @@ -4107,7 +4113,7 @@ class BulkEditObjectsView(PassUserMixin): return Response({"result": "OK"}) -class WorkflowTriggerViewSet(ModelViewSet): +class WorkflowTriggerViewSet(ModelViewSet[WorkflowTrigger]): permission_classes = (IsAuthenticated, PaperlessObjectPermissions) serializer_class = WorkflowTriggerSerializer @@ -4125,7 +4131,7 @@ class WorkflowTriggerViewSet(ModelViewSet): return super().partial_update(request, *args, **kwargs) -class WorkflowActionViewSet(ModelViewSet): +class WorkflowActionViewSet(ModelViewSet[WorkflowAction]): permission_classes = (IsAuthenticated, PaperlessObjectPermissions) serializer_class = WorkflowActionSerializer @@ -4150,7 +4156,7 @@ class WorkflowActionViewSet(ModelViewSet): return super().partial_update(request, *args, **kwargs) -class WorkflowViewSet(ModelViewSet): +class WorkflowViewSet(ModelViewSet[Workflow]): permission_classes = (IsAuthenticated, PaperlessObjectPermissions) serializer_class = WorkflowSerializer @@ -4168,7 +4174,7 @@ class WorkflowViewSet(ModelViewSet): ) -class CustomFieldViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): +class CustomFieldViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet[CustomField]): permission_classes = (IsAuthenticated, PaperlessObjectPermissions) serializer_class = CustomFieldSerializer diff --git a/src/paperless/serialisers.py b/src/paperless/serialisers.py index 00a1c0f41..92676df4e 100644 --- a/src/paperless/serialisers.py +++ b/src/paperless/serialisers.py @@ -74,7 +74,7 @@ class PaperlessAuthTokenSerializer(AuthTokenSerializer): return attrs -class UserSerializer(PasswordValidationMixin, serializers.ModelSerializer): +class UserSerializer(PasswordValidationMixin, serializers.ModelSerializer[User]): password = ObfuscatedPasswordField(required=False) user_permissions = serializers.SlugRelatedField( many=True, @@ -142,7 +142,7 @@ class UserSerializer(PasswordValidationMixin, serializers.ModelSerializer): return user -class GroupSerializer(serializers.ModelSerializer): +class GroupSerializer(serializers.ModelSerializer[Group]): permissions = serializers.SlugRelatedField( many=True, queryset=Permission.objects.exclude(content_type__app_label="admin"), @@ -158,7 +158,7 @@ class GroupSerializer(serializers.ModelSerializer): ) -class SocialAccountSerializer(serializers.ModelSerializer): +class SocialAccountSerializer(serializers.ModelSerializer[SocialAccount]): name = serializers.SerializerMethodField() class Meta: @@ -176,7 +176,7 @@ class SocialAccountSerializer(serializers.ModelSerializer): return "Unknown App" -class ProfileSerializer(PasswordValidationMixin, serializers.ModelSerializer): +class ProfileSerializer(PasswordValidationMixin, serializers.ModelSerializer[User]): email = serializers.EmailField(allow_blank=True, required=False) password = ObfuscatedPasswordField(required=False, allow_null=False) auth_token = serializers.SlugRelatedField(read_only=True, slug_field="key") @@ -209,7 +209,9 @@ class ProfileSerializer(PasswordValidationMixin, serializers.ModelSerializer): ) -class ApplicationConfigurationSerializer(serializers.ModelSerializer): +class ApplicationConfigurationSerializer( + serializers.ModelSerializer[ApplicationConfiguration], +): user_args = serializers.JSONField(binary=True, allow_null=True) barcode_tag_mapping = serializers.JSONField(binary=True, allow_null=True) llm_api_key = ObfuscatedPasswordField( diff --git a/src/paperless/views.py b/src/paperless/views.py index e4db40bb4..c9ded4c0d 100644 --- a/src/paperless/views.py +++ b/src/paperless/views.py @@ -1,5 +1,6 @@ from collections import OrderedDict from pathlib import Path +from typing import Any from allauth.mfa import signals from allauth.mfa.adapter import get_adapter as get_mfa_adapter @@ -114,7 +115,7 @@ class FaviconView(View): return HttpResponseNotFound("favicon.ico not found") -class UserViewSet(ModelViewSet): +class UserViewSet(ModelViewSet[User]): _BOOL_NOT_PROVIDED = object() model = User @@ -216,7 +217,7 @@ class UserViewSet(ModelViewSet): return HttpResponseNotFound("TOTP not found") -class GroupViewSet(ModelViewSet): +class GroupViewSet(ModelViewSet[Group]): model = Group queryset = Group.objects.order_by(Lower("name")) @@ -229,7 +230,7 @@ class GroupViewSet(ModelViewSet): ordering_fields = ("name",) -class ProfileView(GenericAPIView): +class ProfileView(GenericAPIView[Any]): """ User profile view, only available when logged in """ @@ -288,7 +289,7 @@ class ProfileView(GenericAPIView): }, ), ) -class TOTPView(GenericAPIView): +class TOTPView(GenericAPIView[Any]): """ TOTP views """ @@ -368,7 +369,7 @@ class TOTPView(GenericAPIView): }, ), ) -class GenerateAuthTokenView(GenericAPIView): +class GenerateAuthTokenView(GenericAPIView[Any]): """ Generates (or re-generates) an auth token, requires a logged in user unlike the default DRF endpoint @@ -397,7 +398,7 @@ class GenerateAuthTokenView(GenericAPIView): }, ), ) -class ApplicationConfigurationViewSet(ModelViewSet): +class ApplicationConfigurationViewSet(ModelViewSet[ApplicationConfiguration]): model = ApplicationConfiguration queryset = ApplicationConfiguration.objects @@ -450,7 +451,7 @@ class ApplicationConfigurationViewSet(ModelViewSet): }, ), ) -class DisconnectSocialAccountView(GenericAPIView): +class DisconnectSocialAccountView(GenericAPIView[Any]): """ Disconnects a social account provider from the user account """ @@ -476,7 +477,7 @@ class DisconnectSocialAccountView(GenericAPIView): }, ), ) -class SocialAccountProvidersView(GenericAPIView): +class SocialAccountProvidersView(GenericAPIView[Any]): """ List of social account providers """ diff --git a/src/paperless_mail/serialisers.py b/src/paperless_mail/serialisers.py index 77c6c70f8..a4c3c5830 100644 --- a/src/paperless_mail/serialisers.py +++ b/src/paperless_mail/serialisers.py @@ -57,7 +57,7 @@ class MailAccountSerializer(OwnedObjectSerializer): return instance -class AccountField(serializers.PrimaryKeyRelatedField): +class AccountField(serializers.PrimaryKeyRelatedField[MailAccount]): def get_queryset(self): return MailAccount.objects.all().order_by("-id") diff --git a/src/paperless_mail/views.py b/src/paperless_mail/views.py index 9e3850cfc..c4ec2da40 100644 --- a/src/paperless_mail/views.py +++ b/src/paperless_mail/views.py @@ -1,6 +1,7 @@ import datetime import logging from datetime import timedelta +from typing import Any from django.http import HttpResponseBadRequest from django.http import HttpResponseForbidden @@ -65,7 +66,7 @@ from paperless_mail.tasks import process_mail_accounts }, ), ) -class MailAccountViewSet(ModelViewSet, PassUserMixin): +class MailAccountViewSet(PassUserMixin, ModelViewSet[MailAccount]): model = MailAccount queryset = MailAccount.objects.all().order_by("pk") @@ -159,7 +160,7 @@ class MailAccountViewSet(ModelViewSet, PassUserMixin): return Response({"result": "OK"}) -class ProcessedMailViewSet(ReadOnlyModelViewSet, PassUserMixin): +class ProcessedMailViewSet(PassUserMixin, ReadOnlyModelViewSet[ProcessedMail]): permission_classes = (IsAuthenticated, PaperlessObjectPermissions) serializer_class = ProcessedMailSerializer pagination_class = StandardPagination @@ -187,7 +188,7 @@ class ProcessedMailViewSet(ReadOnlyModelViewSet, PassUserMixin): return Response({"result": "OK", "deleted_mail_ids": mail_ids}) -class MailRuleViewSet(ModelViewSet, PassUserMixin): +class MailRuleViewSet(PassUserMixin, ModelViewSet[MailRule]): model = MailRule queryset = MailRule.objects.all().order_by("order") @@ -203,7 +204,7 @@ class MailRuleViewSet(ModelViewSet, PassUserMixin): responses={200: None}, ), ) -class OauthCallbackView(GenericAPIView): +class OauthCallbackView(GenericAPIView[Any]): permission_classes = (IsAuthenticated,) def get(self, request, format=None):