Coverage report: 42%

Files Functions Classes

coverage.py v7.15.2, created at 2026-10-10 09:07 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
documents/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
documents/_snowball_stopwords.py (no function)   100% 2 0 0   100% 0 0   100%
documents/admin.py TagAdmin.save_model   0% 8 8 0   0% 4 0   0%
documents/admin.py DocumentAdmin.has_add_permission   0% 1 1 0   100% 0 0   0%
documents/admin.py DocumentAdmin.created_   0% 1 1 0   100% 0 0   0%
documents/admin.py DocumentAdmin.get_queryset   0% 1 1 0   100% 0 0   0%
documents/admin.py DocumentAdmin.delete_queryset   0% 5 5 0   0% 2 0   0%
documents/admin.py DocumentAdmin.delete_model   0% 3 3 0   100% 0 0   0%
documents/admin.py DocumentAdmin.save_model   0% 3 3 0   100% 0 0   0%
documents/admin.py SavedViewAdmin.get_queryset   0% 1 1 0   100% 0 0   0%
documents/admin.py NotesAdmin.get_queryset   0% 1 1 0   100% 0 0   0%
documents/admin.py ShareLinksAdmin.get_queryset   0% 1 1 0   100% 0 0   0%
documents/admin.py ShareLinkBundleAdmin.get_queryset   0% 1 1 0   100% 0 0   0%
documents/admin.py CustomFieldInstancesAdmin.get_queryset   0% 1 1 0   100% 0 0   0%
documents/admin.py LogEntryAUDIT.has_delete_permission   0% 1 1 0   100% 0 0   0%
documents/admin.py (no function)   100% 116 0 0   50% 4 2   98%
documents/apps.py DocumentsConfig.ready   100% 25 0 0   100% 0 0   100%
documents/apps.py (no function)   100% 6 0 0   100% 0 0   100%
documents/barcodes.py Barcode.is_separator   0% 1 1 0   100% 0 0   0%
documents/barcodes.py Barcode.is_asn   0% 1 1 0   100% 0 0   0%
documents/barcodes.py Barcode.is_tag   0% 4 4 0   0% 4 0   0%
documents/barcodes.py Barcode.stored   0% 1 1 0   100% 0 0   0%
documents/barcodes.py BarcodePlugin.able_to_run   0% 1 1 0   100% 0 0   0%
documents/barcodes.py BarcodePlugin.get_settings   0% 1 1 0   100% 0 0   0%
documents/barcodes.py BarcodePlugin.__init__   0% 2 2 0   100% 0 0   0%
documents/barcodes.py BarcodePlugin.setup   0% 4 4 0   100% 0 0   0%
documents/barcodes.py BarcodePlugin._apply_detected_asn   0% 5 5 0   0% 2 0   0%
documents/barcodes.py BarcodePlugin.run   0% 25 25 0   0% 12 0   0%
documents/barcodes.py BarcodePlugin.cleanup   0% 1 1 0   100% 0 0   0%
documents/barcodes.py BarcodePlugin.convert_from_tiff_to_pdf   0% 4 4 0   0% 2 0   0%
documents/barcodes.py BarcodePlugin.detect   0% 9 9 0   0% 2 0   0%
documents/barcodes.py BarcodePlugin.asn   0% 12 12 0   0% 2 0   0%
documents/barcodes.py BarcodePlugin.tags   0% 19 19 0   0% 10 0   0%
documents/barcodes.py BarcodePlugin.get_separation_pages   0% 7 7 0   0% 4 0   0%
documents/barcodes.py BarcodePlugin.separate_pages   0% 28 28 0   0% 8 0   0%
documents/barcodes.py scannable_mime_types   0% 3 3 0   0% 2 0   0%
documents/barcodes.py read_barcodes_zxing   0% 8 8 0   0% 4 0   0%
documents/barcodes.py scan_pdf   0% 21 21 0   0% 8 0   0%
documents/barcodes.py read_barcode_values   0% 5 5 0   0% 4 0   0%
documents/barcodes.py (no function)   99% 69 1 0   50% 2 1   97%
documents/bulk_download.py BulkArchiveStrategy.__init__   100% 4 0 0   100% 2 0   100%
documents/bulk_download.py BulkArchiveStrategy._filename_only   83% 6 1 0   50% 2 1   75%
documents/bulk_download.py BulkArchiveStrategy._formatted_filepath   0% 8 8 0   0% 6 0   0%
documents/bulk_download.py BulkArchiveStrategy.add_document   0% 1 1 0   100% 0 0   0%
documents/bulk_download.py OriginalsOnlyStrategy.add_document   0% 1 1 0   100% 0 0   0%
documents/bulk_download.py ArchiveOnlyStrategy.add_document   40% 5 3 0   25% 4 1   33%
documents/bulk_download.py OriginalAndArchiveStrategy.add_document   0% 5 5 0   0% 4 0   0%
documents/bulk_download.py (no function)   84% 19 3 0   50% 2 1   81%
documents/bulk_edit.py restore_archive_serial_numbers_task   0% 1 1 0   100% 0 0   0%
documents/bulk_edit.py release_archive_serial_numbers   0% 5 5 0   100% 0 0   0%
documents/bulk_edit.py restore_archive_serial_numbers   0% 3 3 0   0% 2 0   0%
documents/bulk_edit.py _resolve_root_and_source_doc   0% 6 6 0   0% 4 0   0%
documents/bulk_edit.py set_correspondent   0% 7 7 0   0% 2 0   0%
documents/bulk_edit.py set_storage_path   0% 7 7 0   0% 2 0   0%
documents/bulk_edit.py set_document_type   0% 7 7 0   0% 2 0   0%
documents/bulk_edit.py add_tag   0% 15 15 0   0% 6 0   0%
documents/bulk_edit.py remove_tag   0% 9 9 0   0% 2 0   0%
documents/bulk_edit.py modify_tags   0% 25 25 0   0% 12 0   0%
documents/bulk_edit.py modify_custom_fields   0% 21 21 0   0% 12 0   0%
documents/bulk_edit.py delete   75% 16 4 0   50% 4 0   70%
documents/bulk_edit.py reprocess   67% 3 1 0   50% 2 1   60%
documents/bulk_edit.py set_permissions   0% 8 8 0   0% 2 0   0%
documents/bulk_edit.py rotate   24% 29 22 0   17% 12 2   22%
documents/bulk_edit.py merge   21% 57 45 0   9% 22 2   18%
documents/bulk_edit.py merge_as_versions   0% 42 42 0   0% 16 0   0%
documents/bulk_edit.py split   0% 35 35 0   0% 10 0   0%
documents/bulk_edit.py delete_pages   0% 22 22 0   0% 4 0   0%
documents/bulk_edit.py edit_pdf   0% 58 58 0   0% 24 0   0%
documents/bulk_edit.py remove_password   8% 37 34 0   8% 12 1   8%
documents/bulk_edit.py reflect_doclinks   0% 23 23 0   0% 16 0   0%
documents/bulk_edit.py remove_doclink   0% 5 5 0   0% 2 0   0%
documents/bulk_edit.py (no function)   97% 73 2 0   50% 4 2   95%
documents/caching.py get_suggestion_cache_key   100% 1 0 0   100% 0 0   100%
documents/caching.py get_suggestion_cache   0% 9 9 0   0% 4 0   0%
documents/caching.py set_suggestions_cache   0% 3 3 0   0% 2 0   0%
documents/caching.py refresh_suggestions_cache   0% 2 2 0   100% 0 0   0%
documents/caching.py invalidate_suggestions_cache   100% 1 0 0   100% 0 0   100%
documents/caching.py _llm_generation_key   100% 1 0 0   100% 0 0   100%
documents/caching.py _llm_variant_key   0% 5 5 0   100% 0 0   0%
documents/caching.py get_llm_suggestion_cache   0% 4 4 0   0% 2 0   0%
documents/caching.py set_llm_suggestions_cache   0% 1 1 0   100% 0 0   0%
documents/caching.py refresh_llm_suggestions_cache   0% 1 1 0   100% 0 0   0%
documents/caching.py invalidate_llm_suggestions_cache   67% 3 1 0   50% 2 1   60%
documents/caching.py get_metadata_cache_key   100% 1 0 0   100% 0 0   100%
documents/caching.py get_metadata_cache   0% 12 12 0   0% 4 0   0%
documents/caching.py set_metadata_cache   0% 2 2 0   100% 0 0   0%
documents/caching.py refresh_metadata_cache   0% 2 2 0   100% 0 0   0%
documents/caching.py get_thumbnail_modified_key   100% 1 0 0   100% 0 0   100%
documents/caching.py clear_document_caches   100% 2 0 0   100% 0 0   100%
documents/caching.py (no function)   98% 49 1 0   50% 2 1   96%
documents/checks.py parser_check   67% 3 1 0   50% 2 1   60%
documents/checks.py filename_format_check   40% 5 3 0   25% 4 1   33%
documents/checks.py (no function)   100% 10 0 0   100% 0 0   100%
documents/classifier.py _predict_with_threshold   0% 8 8 0   0% 4 0   0%
documents/classifier.py _SignedFileWriter.__init__   0% 4 4 0   100% 0 0   0%
documents/classifier.py _SignedFileWriter.__enter__   0% 3 3 0   100% 0 0   0%
documents/classifier.py _SignedFileWriter.write   0% 2 2 0   100% 0 0   0%
documents/classifier.py _SignedFileWriter.__exit__   0% 8 8 0   0% 4 0   0%
documents/classifier.py _text_analyzer   0% 5 5 0   0% 2 0   0%
documents/classifier.py IncompatibleClassifierVersionError.__init__   0% 2 2 0   100% 0 0   0%
documents/classifier.py load_classifier   0% 29 29 0   0% 10 0   0%
documents/classifier.py DocumentClassifier.__init__   0% 9 9 0   100% 0 0   0%
documents/classifier.py DocumentClassifier._update_data_vectorizer_hash   0% 1 1 0   100% 0 0   0%
documents/classifier.py DocumentClassifier._new_hmac   0% 1 1 0   100% 0 0   0%
documents/classifier.py DocumentClassifier._strip_training_state   0% 3 3 0   100% 0 0   0%
documents/classifier.py DocumentClassifier._compute_hmac   0% 3 3 0   100% 0 0   0%
documents/classifier.py DocumentClassifier.load   0% 21 21 0   0% 10 0   0%
documents/classifier.py DocumentClassifier.save   0% 2 2 0   100% 0 0   0%
documents/classifier.py DocumentClassifier.train   0% 108 108 0   0% 26 0   0%
documents/classifier.py DocumentClassifier.train.content_generator   0% 6 6 0   0% 4 0   0%
documents/classifier.py DocumentClassifier.preprocess_content   0% 5 5 0   0% 2 0   0%
documents/classifier.py DocumentClassifier._get_vectorizer_cache_key   0% 3 3 0   100% 0 0   0%
documents/classifier.py DocumentClassifier._vectorize   0% 12 12 0   0% 2 0   0%
documents/classifier.py DocumentClassifier.predict_correspondent   0% 5 5 0   0% 2 0   0%
documents/classifier.py DocumentClassifier.predict_document_type   0% 5 5 0   0% 2 0   0%
documents/classifier.py DocumentClassifier.predict_tags   0% 11 11 0   0% 6 0   0%
documents/classifier.py DocumentClassifier.predict_storage_path   0% 5 5 0   0% 2 0   0%
documents/classifier.py (no function)   88% 75 9 0   50% 2 1   87%
documents/conditionals.py suggestions_etag   22% 9 7 0   17% 6 1   20%
documents/conditionals.py suggestions_last_modified   22% 9 7 0   17% 6 1   20%
documents/conditionals.py metadata_etag   75% 4 1 0   50% 2 1   67%
documents/conditionals.py metadata_last_modified   75% 4 1 0   50% 2 1   67%
documents/conditionals.py preview_etag   60% 5 2 0   50% 2 1   57%
documents/conditionals.py preview_last_modified   75% 4 1 0   50% 2 1   67%
documents/conditionals.py thumbnail_etag   75% 4 1 0   50% 2 1   67%
documents/conditionals.py thumbnail_last_modified   31% 16 11 0   17% 6 1   27%
documents/conditionals.py (no function)   100% 22 0 0   100% 0 0   100%
documents/consumer.py WorkflowTriggerPlugin.run   0% 4 4 0   0% 2 0   0%
documents/consumer.py ConsumeFileDuplicateError.__init__   0% 3 3 0   100% 0 0   0%
documents/consumer.py should_produce_archive   0% 27 27 0   0% 14 0   0%
documents/consumer.py ConsumerPluginMixin.__init__   0% 3 3 0   100% 0 0   0%
documents/consumer.py ConsumerPluginMixin._send_progress   0% 1 1 0   100% 0 0   0%
documents/consumer.py ConsumerPluginMixin._fail   0% 3 3 0   100% 0 0   0%
documents/consumer.py ConsumerPlugin._create_version_from_root   0% 8 8 0   0% 2 0   0%
documents/consumer.py ConsumerPlugin.run_pre_consume_script   0% 15 15 0   0% 4 0   0%
documents/consumer.py ConsumerPlugin.run_post_consume_script   0% 26 26 0   0% 4 0   0%
documents/consumer.py ConsumerPlugin.run   0% 122 122 0   0% 32 0   0%
documents/consumer.py ConsumerPlugin._parse_title_placeholders   0% 5 5 0   100% 0 0   0%
documents/consumer.py ConsumerPlugin._store   0% 23 23 0   0% 8 0   0%
documents/consumer.py ConsumerPlugin.apply_overrides   0% 24 24 0   0% 22 0   0%
documents/consumer.py ConsumerPlugin._read_version_barcodes   0% 7 7 0   0% 2 0   0%
documents/consumer.py ConsumerPlugin._store_barcodes   0% 2 2 0   0% 2 0   0%
documents/consumer.py ConsumerPlugin._write   0% 6 6 0   100% 0 0   0%
documents/consumer.py ConsumerPreflightPlugin.pre_check_file_exists   0% 4 4 0   0% 4 0   0%
documents/consumer.py ConsumerPreflightPlugin.pre_check_duplicate   0% 22 22 0   0% 8 0   0%
documents/consumer.py ConsumerPreflightPlugin.pre_check_directories   0% 4 4 0   100% 0 0   0%
documents/consumer.py ConsumerPreflightPlugin.run   0% 4 4 0   100% 0 0   0%
documents/consumer.py AsnCheckPlugin.pre_check_asn_value   0% 12 12 0   0% 8 0   0%
documents/consumer.py AsnCheckPlugin.run   0% 1 1 0   100% 0 0   0%
documents/consumer.py (no function)   98% 123 3 0   50% 2 1   97%
documents/context_processors.py settings   100% 4 0 0   100% 0 0   100%
documents/context_processors.py (no function)   100% 5 0 0   100% 0 0   100%
documents/converters.py convert_from_tiff_to_pdf   0% 12 12 0   0% 2 0   0%
documents/converters.py (no function)   100% 8 0 0   100% 0 0   100%
documents/data_models.py DocumentMetadataOverrides.update   0% 48 48 0   0% 42 0   0%
documents/data_models.py DocumentMetadataOverrides.from_document   0% 15 15 0   100% 0 0   0%
documents/data_models.py ConsumableDocument.__post_init__   100% 2 0 0   100% 0 0   100%
documents/data_models.py (no function)   100% 48 0 0   100% 0 0   100%
documents/double_sided.py CollatePlugin.able_to_run   0% 1 1 0   100% 0 0   0%
documents/double_sided.py CollatePlugin.run   0% 36 36 0   0% 12 0   0%
documents/double_sided.py (no function)   100% 23 0 0   100% 0 0   100%
documents/export/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
documents/export/compression.py compression_available   0% 9 9 0   0% 8 0   0%
documents/export/compression.py _module_importable   0% 5 5 0   100% 0 0   0%
documents/export/compression.py level_error   0% 9 9 0   0% 6 0   0%
documents/export/compression.py compress_type_readable   0% 4 4 0   0% 2 0   0%
documents/export/compression.py unreadable_method_names   0% 4 4 0   0% 2 0   0%
documents/export/compression.py (no function)   0% 15 15 0   0% 2 0   0%
documents/export/sinks.py _dumps   0% 1 1 0   100% 0 0   0%
documents/export/sinks.py StreamingManifestWriter.__init__   0% 3 3 0   100% 0 0   0%
documents/export/sinks.py StreamingManifestWriter.write_record   0% 4 4 0   0% 2 0   0%
documents/export/sinks.py StreamingManifestWriter.write_batch   0% 2 2 0   0% 2 0   0%
documents/export/sinks.py StreamingManifestWriter.close   0% 1 1 0   100% 0 0   0%
documents/export/sinks.py ExportSink.add_file   100% 0 0 0   100% 0 0   100%
documents/export/sinks.py ExportSink.add_json   0% 1 1 0   0% 2 0   0%
documents/export/sinks.py ExportSink.stream   0% 1 1 0   0% 2 0   0%
documents/export/sinks.py ExportSink._open   100% 0 0 0   100% 0 0   100%
documents/export/sinks.py ExportSink._finalize   100% 0 0 0   100% 0 0   100%
documents/export/sinks.py ExportSink._abort   100% 0 0 0   100% 0 0   100%
documents/export/sinks.py ExportSink.__enter__   0% 2 2 0   100% 0 0   0%
documents/export/sinks.py ExportSink.__exit__   0% 3 3 0   0% 2 0   0%
documents/export/sinks.py DirectoryExportSink.__init__   0% 6 6 0   100% 0 0   0%
documents/export/sinks.py DirectoryExportSink._open   0% 3 3 0   0% 4 0   0%
documents/export/sinks.py DirectoryExportSink.add_file   0% 14 14 0   0% 8 0   0%
documents/export/sinks.py DirectoryExportSink._content_unchanged   0% 1 1 0   100% 0 0   0%
documents/export/sinks.py DirectoryExportSink.add_json   0% 10 10 0   0% 6 0   0%
documents/export/sinks.py DirectoryExportSink.stream   0% 16 16 0   0% 2 0   0%
documents/export/sinks.py DirectoryExportSink._commit_streamed_file   0% 6 6 0   0% 4 0   0%
documents/export/sinks.py DirectoryExportSink._finalize   0% 6 6 0   0% 6 0   0%
documents/export/sinks.py DirectoryExportSink._abort   0% 1 1 0   100% 0 0   0%
documents/export/sinks.py ZipExportSink.__init__   0% 10 10 0   100% 0 0   0%
documents/export/sinks.py ZipExportSink._open   0% 2 2 0   100% 0 0   0%
documents/export/sinks.py ZipExportSink._ensure_dirs   0% 7 7 0   0% 4 0   0%
documents/export/sinks.py ZipExportSink.add_file   0% 3 3 0   100% 0 0   0%
documents/export/sinks.py ZipExportSink.add_json   0% 3 3 0   100% 0 0   0%
documents/export/sinks.py ZipExportSink.stream   0% 16 16 0   0% 2 0   0%
documents/export/sinks.py ZipExportSink._finalize   0% 12 12 0   0% 4 0   0%
documents/export/sinks.py ZipExportSink._wipe_destination   0% 7 7 0   0% 6 0   0%
documents/export/sinks.py ZipExportSink._abort   0% 7 7 0   0% 4 0   0%
documents/export/sinks.py (no function)   0% 62 62 0   0% 4 0   0%
documents/file_handling.py validate_path_in_root   0% 4 4 0   0% 2 0   0%
documents/file_handling.py create_source_path_directory   100% 1 0 0   100% 0 0   100%
documents/file_handling.py delete_empty_directories   25% 12 9 0   38% 8 3   30%
documents/file_handling.py generate_unique_filename   0% 24 24 0   0% 14 0   0%
documents/file_handling.py format_filename   0% 13 13 0   0% 6 0   0%
documents/file_handling.py generate_filename   54% 26 12 0   36% 14 5   48%
documents/file_handling.py (no function)   100% 16 0 0   100% 0 0   100%
documents/filters.py ObjectFilter.__init__   100% 4 0 0   100% 0 0   100%
documents/filters.py ObjectFilter.filter   100% 13 0 0   100% 8 0   100%
documents/filters.py InboxFilter.filter   100% 5 0 0   100% 4 0   100%
documents/filters.py TitleContentFilter.filter   100% 5 0 0   100% 2 0   100%
documents/filters.py EffectiveContentFilter.filter   100% 4 0 0   100% 2 0   100%
documents/filters.py SharedByUser.filter   100% 4 0 0   100% 0 0   100%
documents/filters.py CustomFieldsFilter.filter   62% 13 5 0   30% 10 1   48%
documents/filters.py MimeTypeFilter.filter   100% 4 0 0   100% 2 0   100%
documents/filters.py MonetaryAmountField.to_internal_value   0% 9 9 0   0% 4 0   0%
documents/filters.py MonetaryAmountField.to_representation   0% 1 1 0   100% 0 0   0%
documents/filters.py SelectField.__init__   0% 2 2 0   100% 0 0   0%
documents/filters.py SelectField.to_internal_value   0% 5 5 0   100% 0 0   0%
documents/filters.py handle_validation_prefix   100% 7 0 0   100% 0 0   100%
documents/filters.py handle_validation_prefix.wrapper   100% 4 0 0   100% 0 0   100%
documents/filters.py CustomFieldQueryParser.__init__   100% 8 0 0   100% 0 0   100%
documents/filters.py CustomFieldQueryParser.parse   100% 5 0 0   100% 0 0   100%
documents/filters.py CustomFieldQueryParser._parse_expr   43% 7 4 0   17% 6 1   31%
documents/filters.py CustomFieldQueryParser._parse_expr_list   0% 3 3 0   0% 2 0   0%
documents/filters.py CustomFieldQueryParser._parse_logical_expr   0% 10 10 0   0% 6 0   0%
documents/filters.py CustomFieldQueryParser._parse_atom   0% 22 22 0   0% 8 0   0%
documents/filters.py CustomFieldQueryParser._get_custom_field   0% 10 10 0   0% 2 0   0%
documents/filters.py CustomFieldQueryParser._split_op   0% 3 3 0   100% 0 0   0%
documents/filters.py CustomFieldQueryParser._validate_atom_op   0% 13 13 0   0% 10 0   0%
documents/filters.py CustomFieldQueryParser._get_serializer_field   0% 27 27 0   0% 18 0   0%
documents/filters.py CustomFieldQueryParser._validate_atom_value   0% 2 2 0   100% 0 0   0%
documents/filters.py CustomFieldQueryParser._parse_atom_doc_link_contains   0% 8 8 0   0% 4 0   0%
documents/filters.py CustomFieldQueryParser._track_query_depth   83% 6 1 0   50% 2 1   75%
documents/filters.py CustomFieldQueryFilter.__init__   100% 2 0 0   100% 0 0   100%
documents/filters.py CustomFieldQueryFilter.filter   67% 6 2 0   100% 2 0   75%
documents/filters.py DocumentFilterSet.__init__   100% 2 0 0   100% 0 0   100%
documents/filters.py DocumentFilterSet.filter_has_duplicates   86% 7 1 0   50% 2 1   78%
documents/filters.py ShareLinkBundleFilterSet.filter_documents   89% 9 1 0   50% 4 2   77%
documents/filters.py PaperlessTaskFilterSet.filter_name   80% 5 1 0   50% 2 1   71%
documents/filters.py PaperlessTaskFilterSet.filter_result   73% 11 3 0   50% 4 2   67%
documents/filters.py PaperlessTaskFilterSet.filter_is_complete   100% 3 0 0   100% 2 0   100%
documents/filters.py PermittedObjectsFilter.filter_queryset   78% 9 2 0   67% 6 2   73%
documents/filters.py DocumentsOrderingFilter.filter_queryset   9% 34 31 0   5% 22 1   7%
documents/filters.py (no function)   99% 206 1 0   50% 2 1   99%
documents/loggers.py LoggingMixin.renew_logging_group   0% 2 2 0   100% 0 0   0%
documents/loggers.py (no function)   100% 4 0 0   100% 0 0   100%
documents/mail.py send_email   0% 14 14 0   0% 6 0   0%
documents/mail.py _get_unique_filename   0% 10 10 0   0% 4 0   0%
documents/mail.py (no function)   100% 14 0 0   100% 0 0   100%
documents/management/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
documents/management/commands/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
documents/management/commands/base.py BufferingLogHandler.__init__   0% 2 2 0   100% 0 0   0%
documents/management/commands/base.py BufferingLogHandler.emit   0% 1 1 0   100% 0 0   0%
documents/management/commands/base.py BufferingLogHandler.render   0% 12 12 0   0% 4 0   0%
documents/management/commands/base.py BufferingLogHandler.clear   0% 1 1 0   100% 0 0   0%
documents/management/commands/base.py ProcessResult.success   0% 1 1 0   100% 0 0   0%
documents/management/commands/base.py PaperlessCommand.add_arguments   0% 6 6 0   0% 4 0   0%
documents/management/commands/base.py PaperlessCommand.execute   0% 9 9 0   0% 6 0   0%
documents/management/commands/base.py PaperlessCommand.buffered_logging   0% 15 15 0   0% 4 0   0%
documents/management/commands/base.py PaperlessCommand._progress_columns   0% 1 1 0   100% 0 0   0%
documents/management/commands/base.py PaperlessCommand._create_progress   0% 1 1 0   100% 0 0   0%
documents/management/commands/base.py PaperlessCommand._get_iterable_length   0% 5 5 0   0% 4 0   0%
documents/management/commands/base.py PaperlessCommand.track   0% 10 10 0   0% 6 0   0%
documents/management/commands/base.py PaperlessCommand.track_with_stats   0% 13 13 0   0% 6 0   0%
documents/management/commands/base.py PaperlessCommand.process_parallel   0% 4 4 0   0% 2 0   0%
documents/management/commands/base.py PaperlessCommand._process_sequential   0% 6 6 0   0% 2 0   0%
documents/management/commands/base.py PaperlessCommand._process_parallel   0% 13 13 0   0% 2 0   0%
documents/management/commands/base.py (no function)   0% 75 75 0   0% 2 0   0%
documents/management/commands/convert_mariadb_uuid.py Command.convert_field   0% 11 11 0   0% 4 0   0%
documents/management/commands/convert_mariadb_uuid.py Command.handle   0% 1 1 0   100% 0 0   0%
documents/management/commands/convert_mariadb_uuid.py (no function)   0% 8 8 0   100% 0 0   0%
documents/management/commands/document_archiver.py Command.add_arguments   0% 3 3 0   100% 0 0   0%
documents/management/commands/document_archiver.py Command.handle   0% 13 13 0   0% 6 0   0%
documents/management/commands/document_archiver.py (no function)   0% 12 12 0   100% 0 0   0%
documents/management/commands/document_consumer.py TrackedFile.update_stats   0% 7 7 0   100% 0 0   0%
documents/management/commands/document_consumer.py TrackedFile.is_unchanged   0% 5 5 0   100% 0 0   0%
documents/management/commands/document_consumer.py FileStabilityTracker.__init__   0% 2 2 0   100% 0 0   0%
documents/management/commands/document_consumer.py FileStabilityTracker.track   0% 17 17 0   0% 8 0   0%
documents/management/commands/document_consumer.py FileStabilityTracker.get_stable_files   0% 25 25 0   0% 14 0   0%
documents/management/commands/document_consumer.py FileStabilityTracker.is_tracking   0% 1 1 0   100% 0 0   0%
documents/management/commands/document_consumer.py FileStabilityTracker.has_pending_files   0% 1 1 0   100% 0 0   0%
documents/management/commands/document_consumer.py FileStabilityTracker.pending_count   0% 1 1 0   100% 0 0   0%
documents/management/commands/document_consumer.py ConsumerFilter.__init__   0% 10 10 0   0% 6 0   0%
documents/management/commands/document_consumer.py ConsumerFilter.__call__   0% 6 6 0   0% 4 0   0%
documents/management/commands/document_consumer.py ConsumerFilter._has_supported_extension   0% 2 2 0   100% 0 0   0%
documents/management/commands/document_consumer.py _tags_from_path   0% 7 7 0   0% 2 0   0%
documents/management/commands/document_consumer.py _consume_file   0% 20 20 0   0% 4 0   0%
documents/management/commands/document_consumer.py Command.add_arguments   0% 3 3 0   100% 0 0   0%
documents/management/commands/document_consumer.py Command.handle   0% 26 26 0   0% 10 0   0%
documents/management/commands/document_consumer.py Command._process_existing_files   0% 11 11 0   0% 8 0   0%
documents/management/commands/document_consumer.py Command._rescan_existing_files   0% 14 14 0   0% 12 0   0%
documents/management/commands/document_consumer.py Command._watch_directory   0% 54 54 0   0% 30 0   0%
documents/management/commands/document_consumer.py Command._watch_directory.cap_for_rescan   0% 5 5 0   0% 4 0   0%
documents/management/commands/document_consumer.py (no function)   0% 59 59 0   0% 2 0   0%
documents/management/commands/document_create_classifier.py Command.handle   0% 5 5 0   100% 0 0   0%
documents/management/commands/document_create_classifier.py (no function)   0% 9 9 0   100% 0 0   0%
documents/management/commands/document_exporter.py serialize_queryset_batched   0% 3 3 0   0% 2 0   0%
documents/management/commands/document_exporter.py Command.add_arguments   0% 17 17 0   100% 0 0   0%
documents/management/commands/document_exporter.py Command.handle   0% 40 40 0   0% 20 0   0%
documents/management/commands/document_exporter.py Command.dump   0% 53 53 0   0% 40 0   0%
documents/management/commands/document_exporter.py Command.generate_base_name   0% 10 10 0   0% 4 0   0%
documents/management/commands/document_exporter.py Command.generate_document_targets   0% 20 20 0   0% 10 0   0%
documents/management/commands/document_exporter.py Command.copy_document_files   0% 7 7 0   0% 6 0   0%
documents/management/commands/document_exporter.py Command.generate_share_link_bundle_target   0% 8 8 0   0% 2 0   0%
documents/management/commands/document_exporter.py Command.copy_share_link_bundle_file   0% 4 4 0   0% 2 0   0%
documents/management/commands/document_exporter.py Command._encrypt_record_inline   0% 7 7 0   0% 8 0   0%
documents/management/commands/document_exporter.py Command._write_split_manifest   0% 8 8 0   0% 2 0   0%
documents/management/commands/document_exporter.py (no function)   0% 81 81 0   0% 4 0   0%
documents/management/commands/document_fuzzy_match.py _process_and_match   0% 4 4 0   100% 0 0   0%
documents/management/commands/document_fuzzy_match.py Command.add_arguments   0% 5 5 0   100% 0 0   0%
documents/management/commands/document_fuzzy_match.py Command._render_results   0% 33 33 0   0% 14 0   0%
documents/management/commands/document_fuzzy_match.py Command._render_results._cell   0% 4 4 0   0% 2 0   0%
documents/management/commands/document_fuzzy_match.py Command.handle   0% 25 25 0   0% 10 0   0%
documents/management/commands/document_fuzzy_match.py Command.handle._work_gen   0% 3 3 0   0% 4 0   0%
documents/management/commands/document_fuzzy_match.py Command.handle._iter_matches   0% 11 11 0   0% 12 0   0%
documents/management/commands/document_fuzzy_match.py (no function)   0% 22 22 0   100% 0 0   0%
documents/management/commands/document_importer.py iter_manifest_records   0% 5 5 0   100% 0 0   0%
documents/management/commands/document_importer.py _deserialize_record   0% 27 27 0   0% 8 0   0%
documents/management/commands/document_importer.py _iter_document_copy_records   0% 4 4 0   0% 6 0   0%
documents/management/commands/document_importer.py _iter_share_link_bundle_copy_records   0% 4 4 0   0% 6 0   0%
documents/management/commands/document_importer.py disable_signal   0% 5 5 0   100% 0 0   0%
documents/management/commands/document_importer.py Command.add_arguments   0% 5 5 0   100% 0 0   0%
documents/management/commands/document_importer.py Command.pre_check   0% 8 8 0   0% 4 0   0%
documents/management/commands/document_importer.py Command.pre_check.pre_check_maybe_not_empty   0% 12 12 0   0% 14 0   0%
documents/management/commands/document_importer.py Command.pre_check.pre_check_manifest_exists   0% 2 2 0   0% 2 0   0%
documents/management/commands/document_importer.py Command.load_manifest_files   0% 4 4 0   0% 2 0   0%
documents/management/commands/document_importer.py Command.load_metadata   0% 18 18 0   0% 12 0   0%
documents/management/commands/document_importer.py Command._finalize_db_load   0% 9 9 0   0% 6 0   0%
documents/management/commands/document_importer.py Command._import_error_context_message   0% 3 3 0   0% 2 0   0%
documents/management/commands/document_importer.py Command.load_data_to_database   0% 23 23 0   0% 6 0   0%
documents/management/commands/document_importer.py Command.load_data_to_database.flush_model   0% 13 13 0   0% 8 0   0%
documents/management/commands/document_importer.py Command.load_data_to_database.flush_all   0% 2 2 0   0% 2 0   0%
documents/management/commands/document_importer.py Command.handle   0% 21 21 0   0% 6 0   0%
documents/management/commands/document_importer.py Command._run_import   0% 22 22 0   0% 6 0   0%
documents/management/commands/document_importer.py Command.check_manifest_validity   0% 11 11 0   0% 10 0   0%
documents/management/commands/document_importer.py Command.check_manifest_validity.check_document_validity   0% 21 21 0   0% 8 0   0%
documents/management/commands/document_importer.py Command.check_manifest_validity.check_share_link_bundle_validity   0% 11 11 0   0% 4 0   0%
documents/management/commands/document_importer.py Command._import_files_from_manifest   0% 37 37 0   0% 16 0   0%
documents/management/commands/document_importer.py Command._decrypt_record_if_needed   0% 6 6 0   0% 6 0   0%
documents/management/commands/document_importer.py Command.decrypt_secret_fields   0% 19 19 0   0% 8 0   0%
documents/management/commands/document_importer.py (no function)   0% 80 80 0   0% 2 0   0%
documents/management/commands/document_index.py Command.add_arguments   0% 5 5 0   100% 0 0   0%
documents/management/commands/document_index.py Command.handle   0% 16 16 0   0% 10 0   0%
documents/management/commands/document_index.py (no function)   0% 16 16 0   100% 0 0   0%
documents/management/commands/document_llmindex.py Command.add_arguments   0% 2 2 0   100% 0 0   0%
documents/management/commands/document_llmindex.py Command.handle   0% 7 7 0   0% 4 0   0%
documents/management/commands/document_llmindex.py (no function)   0% 11 11 0   100% 0 0   0%
documents/management/commands/document_renamer.py Command.handle   0% 2 2 0   0% 2 0   0%
documents/management/commands/document_renamer.py (no function)   0% 8 8 0   100% 0 0   0%
documents/management/commands/document_retagger.py DocumentSuggestion.has_suggestions   0% 1 1 0   100% 0 0   0%
documents/management/commands/document_retagger.py _build_stats_table   0% 10 10 0   100% 0 0   0%
documents/management/commands/document_retagger.py _build_suggestion_table   0% 23 23 0   0% 10 0   0%
documents/management/commands/document_retagger.py _build_summary_table   0% 10 10 0   100% 0 0   0%
documents/management/commands/document_retagger.py Command.add_arguments   0% 11 11 0   100% 0 0   0%
documents/management/commands/document_retagger.py Command.handle   0% 56 56 0   0% 28 0   0%
documents/management/commands/document_retagger.py Command.handle.render_stats   0% 1 1 0   100% 0 0   0%
documents/management/commands/document_retagger.py (no function)   0% 48 48 0   0% 2 0   0%
documents/management/commands/document_sanity_checker.py Command._render_results   0% 35 35 0   0% 22 0   0%
documents/management/commands/document_sanity_checker.py Command.handle   0% 2 2 0   100% 0 0   0%
documents/management/commands/document_sanity_checker.py (no function)   0% 17 17 0   100% 0 0   0%
documents/management/commands/document_thumbnails.py _process_document   0% 8 8 0   0% 2 0   0%
documents/management/commands/document_thumbnails.py Command.add_arguments   0% 2 2 0   100% 0 0   0%
documents/management/commands/document_thumbnails.py Command.handle   0% 8 8 0   0% 6 0   0%
documents/management/commands/document_thumbnails.py (no function)   0% 13 13 0   100% 0 0   0%
documents/management/commands/manage_superuser.py Command.create_parser   100% 3 0 0   100% 0 0   100%
documents/management/commands/manage_superuser.py Command.handle   62% 13 5 0   50% 6 3   58%
documents/management/commands/manage_superuser.py (no function)   100% 10 0 0   100% 0 0   100%
documents/management/commands/mixins.py CryptMixin.get_crypt_params   0% 1 1 0   100% 0 0   0%
documents/management/commands/mixins.py CryptMixin.load_crypt_params   0% 4 4 0   100% 0 0   0%
documents/management/commands/mixins.py CryptMixin.setup_crypto   0% 6 6 0   0% 2 0   0%
documents/management/commands/mixins.py CryptMixin.encrypt_string   0% 1 1 0   100% 0 0   0%
documents/management/commands/mixins.py CryptMixin.decrypt_string   0% 1 1 0   100% 0 0   0%
documents/management/commands/mixins.py (no function)   0% 25 25 0   100% 0 0   0%
documents/management/commands/prune_audit_logs.py Command.handle   0% 7 7 0   0% 4 0   0%
documents/management/commands/prune_audit_logs.py (no function)   0% 8 8 0   100% 0 0   0%
documents/matching.py log_reason   0% 3 3 0   100% 0 0   0%
documents/matching.py match_correspondents   0% 7 7 0   0% 4 0   0%
documents/matching.py match_document_types   0% 7 7 0   0% 4 0   0%
documents/matching.py match_tags   0% 7 7 0   0% 4 0   0%
documents/matching.py match_storage_paths   0% 7 7 0   0% 4 0   0%
documents/matching.py matches   0% 45 45 0   0% 34 0   0%
documents/matching.py _split_match   0% 3 3 0   100% 0 0   0%
documents/matching.py consumable_document_matches_workflow   0% 16 16 0   0% 8 0   0%
documents/matching.py existing_document_matches_workflow   0% 56 56 0   0% 40 0   0%
documents/matching.py prefilter_documents_by_workflowtrigger   0% 37 37 0   0% 30 0   0%
documents/matching.py document_matches_workflow   0% 18 18 0   0% 10 0   0%
documents/matching.py (no function)   94% 35 2 0   50% 2 1   92%
documents/models.py MatchingModel.__str__   100% 1 0 0   100% 0 0   100%
documents/models.py Tag.clean   77% 13 3 0   62% 8 3   71%
documents/models.py Document.__str__   100% 7 0 0   50% 4 2   82%
documents/models.py Document.get_effective_barcodes   0% 2 2 0   100% 0 0   0%
documents/models.py Document.get_effective_content   0% 18 18 0   0% 10 0   0%
documents/models.py Document.suggestion_content   0% 6 6 0   0% 2 0   0%
documents/models.py Document.source_path   100% 2 0 0   100% 0 0   100%
documents/models.py Document.source_file   0% 1 1 0   100% 0 0   0%
documents/models.py Document.has_archive_version   100% 1 0 0   100% 0 0   100%
documents/models.py Document.archive_path   67% 3 1 0   50% 2 1   60%
documents/models.py Document.archive_file   0% 1 1 0   100% 0 0   0%
documents/models.py Document.get_public_filename   70% 10 3 0   50% 6 3   62%
documents/models.py Document.file_type   100% 1 0 0   100% 0 0   100%
documents/models.py Document.thumbnail_path   100% 3 0 0   100% 0 0   100%
documents/models.py Document.thumbnail_file   0% 1 1 0   100% 0 0   0%
documents/models.py Document.created_date   0% 1 1 0   100% 0 0   0%
documents/models.py Document.add_nested_tags   0% 6 6 0   0% 2 0   0%
documents/models.py Document.delete   80% 5 1 0   50% 4 2   67%
documents/models.py SavedView.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py SavedViewFilterRule.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py UiSettings.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py PaperlessTask.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py PaperlessTask.is_complete   0% 1 1 0   100% 0 0   0%
documents/models.py PaperlessTask.related_document_ids   29% 7 5 0   17% 6 1   23%
documents/models.py Note.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py DocumentBarcode.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py ShareLink.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py ShareLinkBundle.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py ShareLinkBundle.absolute_file_path   0% 12 12 0   0% 4 0   0%
documents/models.py ShareLinkBundle.remove_file   0% 5 5 0   0% 2 0   0%
documents/models.py ShareLinkBundle.delete   0% 2 2 0   100% 0 0   0%
documents/models.py CustomField.__str__   100% 1 0 0   100% 0 0   100%
documents/models.py CustomFieldInstance.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py CustomFieldInstance.get_value_field_name   50% 4 2 0   100% 0 0   50%
documents/models.py CustomFieldInstance.value   100% 2 0 0   100% 0 0   100%
documents/models.py CustomFieldInstance.value_for_search   0% 6 6 0   0% 4 0   0%
documents/models.py WorkflowTrigger.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py WorkflowActionEmail.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py WorkflowActionWebhook.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py WorkflowAction.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py Workflow.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py WorkflowRun.__str__   0% 1 1 0   100% 0 0   0%
documents/models.py (no function)   100% 586 0 0   50% 4 2   99%
documents/parsers.py is_mime_type_supported   100% 1 0 0   100% 0 0   100%
documents/parsers.py get_default_file_extension   71% 7 2 0   50% 4 2   64%
documents/parsers.py is_file_ext_supported   0% 3 3 0   0% 2 0   0%
documents/parsers.py get_supported_file_extensions   0% 6 6 0   0% 4 0   0%
documents/parsers.py run_convert   0% 24 24 0   0% 4 0   0%
documents/parsers.py get_default_thumbnail   0% 1 1 0   100% 0 0   0%
documents/parsers.py make_thumbnail_from_pdf_gs_fallback   0% 16 16 0   100% 0 0   0%
documents/parsers.py make_thumbnail_from_pdf   0% 7 7 0   100% 0 0   0%
documents/parsers.py DocumentParser.__init__   0% 10 10 0   100% 0 0   0%
documents/parsers.py DocumentParser.progress   0% 2 2 0   0% 2 0   0%
documents/parsers.py DocumentParser.get_settings   0% 1 1 0   100% 0 0   0%
documents/parsers.py DocumentParser.read_file_handle_unicode_errors   0% 6 6 0   100% 0 0   0%
documents/parsers.py DocumentParser.extract_metadata   0% 1 1 0   100% 0 0   0%
documents/parsers.py DocumentParser.get_page_count   0% 1 1 0   100% 0 0   0%
documents/parsers.py DocumentParser.parse   0% 1 1 0   100% 0 0   0%
documents/parsers.py DocumentParser.get_archive_path   0% 1 1 0   100% 0 0   0%
documents/parsers.py DocumentParser.get_thumbnail   0% 1 1 0   100% 0 0   0%
documents/parsers.py DocumentParser.get_text   0% 1 1 0   100% 0 0   0%
documents/parsers.py DocumentParser.get_date   0% 1 1 0   100% 0 0   0%
documents/parsers.py DocumentParser.cleanup   0% 2 2 0   100% 0 0   0%
documents/parsers.py (no function)   98% 41 1 0   50% 2 1   95%
documents/permissions.py PaperlessObjectPermissions.has_object_permission   100% 5 0 0   100% 4 0   100%
documents/permissions.py PaperlessAdminPermissions.has_permission   100% 1 0 0   100% 0 0   100%
documents/permissions.py has_global_statistics_permission   67% 3 1 0   50% 2 1   60%
documents/permissions.py has_system_status_permission   100% 3 0 0   100% 2 0   100%
documents/permissions.py get_groups_with_only_permission   100% 4 0 0   100% 0 0   100%
documents/permissions.py set_permissions_for_object   50% 28 14 0   40% 30 6   45%
documents/permissions.py _resolve_permissions   80% 5 1 0   50% 2 1   71%
documents/permissions.py _apply_bulk_permission_entry   70% 10 3 0   50% 6 3   62%
documents/permissions.py set_permissions_for_objects   95% 20 1 0   93% 14 1   94%
documents/permissions.py permitted_object_ids   50% 16 8 0   67% 6 2   55%
documents/permissions.py user_is_unrestricted   67% 3 1 0   50% 2 1   60%
documents/permissions.py restrict_queryset_to_visible   67% 3 1 0   50% 2 1   60%
documents/permissions.py permitted_document_ids   100% 1 0 0   100% 0 0   100%
documents/permissions.py get_document_count_filter_for_user   100% 4 0 0   100% 2 0   100%
documents/permissions.py annotate_document_count_by_ids   80% 5 1 0   50% 2 1   71%
documents/permissions.py annotate_document_count_for_related_queryset   100% 1 0 0   100% 0 0   100%
documents/permissions.py get_objects_for_user_owner_aware   100% 5 0 0   100% 0 0   100%
documents/permissions.py has_perms_owner_aware   100% 2 0 0   100% 0 0   100%
documents/permissions.py ViewDocumentsPermissions.has_permission   67% 3 1 0   50% 2 1   60%
documents/permissions.py TrashPermissions.has_permission   67% 3 1 0   50% 2 1   60%
documents/permissions.py PaperlessNotePermissions.has_permission   100% 4 0 0   100% 2 0   100%
documents/permissions.py AcknowledgeTasksPermissions.has_permission   75% 4 1 0   50% 2 1   67%
documents/permissions.py (no function)   100% 59 0 0   100% 0 0   100%
documents/plugins/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
documents/plugins/base.py StopConsumeTaskError.__init__   0% 2 2 0   100% 0 0   0%
documents/plugins/base.py ConsumeTaskPlugin.__init__   0% 6 6 0   100% 0 0   0%
documents/plugins/base.py ConsumeTaskPlugin.able_to_run   100% 0 0 0   100% 0 0   100%
documents/plugins/base.py ConsumeTaskPlugin.setup   100% 0 0 0   100% 0 0   100%
documents/plugins/base.py ConsumeTaskPlugin.run   100% 0 0 0   100% 0 0   100%
documents/plugins/base.py ConsumeTaskPlugin.cleanup   100% 0 0 0   100% 0 0   100%
documents/plugins/base.py AlwaysRunPluginMixin.able_to_run   0% 1 1 0   100% 0 0   0%
documents/plugins/base.py NoSetupPluginMixin.setup   0% 1 1 0   100% 0 0   0%
documents/plugins/base.py NoCleanupPluginMixin.cleanup   0% 1 1 0   100% 0 0   0%
documents/plugins/base.py (no function)   100% 27 0 0   100% 0 0   100%
documents/plugins/date_parsing/__init__.py _discover_parser_class   0% 20 20 0   0% 8 0   0%
documents/plugins/date_parsing/__init__.py get_date_parser   0% 5 5 0   100% 0 0   0%
documents/plugins/date_parsing/__init__.py (no function)   100% 18 0 0   100% 0 0   100%
documents/plugins/date_parsing/base.py DateParserPluginBase.__init__   0% 1 1 0   100% 0 0   0%
documents/plugins/date_parsing/base.py DateParserPluginBase.__enter__   0% 1 1 0   100% 0 0   0%
documents/plugins/date_parsing/base.py DateParserPluginBase.__exit__   100% 0 0 0   100% 0 0   100%
documents/plugins/date_parsing/base.py DateParserPluginBase._parse_string   0% 5 5 0   100% 0 0   0%
documents/plugins/date_parsing/base.py DateParserPluginBase._filter_date   0% 3 3 0   0% 2 0   0%
documents/plugins/date_parsing/base.py DateParserPluginBase.parse   100% 0 0 0   100% 0 0   100%
documents/plugins/date_parsing/base.py (no function)   100% 20 0 0   100% 0 0   100%
documents/plugins/date_parsing/regex_parser.py RegexDateParserPlugin._process_match   0% 3 3 0   100% 0 0   0%
documents/plugins/date_parsing/regex_parser.py RegexDateParserPlugin._process_content   0% 4 4 0   0% 4 0   0%
documents/plugins/date_parsing/regex_parser.py RegexDateParserPlugin.parse   0% 3 3 0   0% 2 0   0%
documents/plugins/date_parsing/regex_parser.py (no function)   100% 11 0 0   100% 0 0   100%
documents/plugins/helpers.py BaseStatusManager.__init__   100% 1 0 0   100% 0 0   100%
documents/plugins/helpers.py BaseStatusManager.__enter__   0% 2 2 0   100% 0 0   0%
documents/plugins/helpers.py BaseStatusManager.__exit__   0% 1 1 0   100% 0 0   0%
documents/plugins/helpers.py BaseStatusManager.open   100% 2 0 0   50% 2 1   75%
documents/plugins/helpers.py BaseStatusManager.close   0% 3 3 0   0% 2 0   0%
documents/plugins/helpers.py BaseStatusManager.send   75% 4 1 0   50% 2 1   67%
documents/plugins/helpers.py ProgressManager.__init__   0% 3 3 0   100% 0 0   0%
documents/plugins/helpers.py ProgressManager.send_progress   0% 3 3 0   100% 0 0   0%
documents/plugins/helpers.py DocumentsStatusManager.send_documents_deleted   100% 2 0 0   100% 0 0   100%
documents/plugins/helpers.py DocumentsStatusManager.send_document_updated   0% 2 2 0   100% 0 0   0%
documents/plugins/helpers.py (no function)   97% 36 1 0   50% 2 1   95%
documents/regex.py validate_regex_pattern   100% 4 0 0   100% 0 0   100%
documents/regex.py safe_regex_search   0% 11 11 0   100% 0 0   0%
documents/regex.py safe_regex_match   0% 11 11 0   100% 0 0   0%
documents/regex.py safe_regex_sub   0% 11 11 0   100% 0 0   0%
documents/regex.py safe_regex_finditer   0% 5 5 0   100% 0 0   0%
documents/regex.py (no function)   100% 12 0 0   100% 0 0   100%
documents/sanity_checker.py SanityCheckMessages.__init__   0% 15 15 0   100% 0 0   0%
documents/sanity_checker.py SanityCheckMessages._add_document_issue   0% 7 7 0   0% 4 0   0%
documents/sanity_checker.py SanityCheckMessages.error   0% 6 6 0   0% 4 0   0%
documents/sanity_checker.py SanityCheckMessages.warning   0% 7 7 0   0% 4 0   0%
documents/sanity_checker.py SanityCheckMessages.info   0% 4 4 0   0% 2 0   0%
documents/sanity_checker.py SanityCheckMessages.document_pks   0% 1 1 0   100% 0 0   0%
documents/sanity_checker.py SanityCheckMessages.iter_messages   0% 1 1 0   100% 0 0   0%
documents/sanity_checker.py SanityCheckMessages.__getitem__   0% 1 1 0   100% 0 0   0%
documents/sanity_checker.py SanityCheckMessages.has_global_issues   0% 1 1 0   100% 0 0   0%
documents/sanity_checker.py SanityCheckMessages.total_issue_count   0% 1 1 0   100% 0 0   0%
documents/sanity_checker.py SanityCheckMessages.log_messages   0% 13 13 0   0% 10 0   0%
documents/sanity_checker.py _build_present_files   0% 9 9 0   0% 2 0   0%
documents/sanity_checker.py _check_thumbnail   0% 9 9 0   0% 2 0   0%
documents/sanity_checker.py _check_original   0% 11 11 0   0% 4 0   0%
documents/sanity_checker.py _check_archive   0% 18 18 0   0% 12 0   0%
documents/sanity_checker.py _check_content   0% 2 2 0   0% 2 0   0%
documents/sanity_checker.py _check_document   0% 4 4 0   100% 0 0   0%
documents/sanity_checker.py check_sanity   0% 8 8 0   0% 4 0   0%
documents/sanity_checker.py (no function)   100% 38 0 0   100% 0 0   100%
documents/schema.py AngularApiAuthenticationOverrideScheme.get_security_definition   0% 1 1 0   100% 0 0   0%
documents/schema.py PaperelessBasicAuthenticationScheme.get_security_definition   100% 1 0 0   100% 0 0   100%
documents/schema.py generate_object_with_permissions_schema   100% 1 0 0   100% 0 0   100%
documents/schema.py (no function)   100% 13 0 0   100% 0 0   100%
documents/search/__init__.py (no function)   100% 17 0 0   100% 0 0   100%
documents/search/_backend.py _extract_autocomplete_words   0% 5 5 0   0% 4 0   0%
documents/search/_backend.py TantivyRelevanceList.__init__   100% 3 0 0   100% 0 0   100%
documents/search/_backend.py TantivyRelevanceList.__len__   100% 1 0 0   100% 0 0   100%
documents/search/_backend.py TantivyRelevanceList.__getitem__   50% 10 5 0   33% 6 2   44%
documents/search/_backend.py TantivyRelevanceList.get_all_ids   0% 1 1 0   100% 0 0   0%
documents/search/_backend.py WriteBatch.__init__   100% 4 0 0   100% 0 0   100%
documents/search/_backend.py WriteBatch._writer   100% 2 0 0   100% 0 0   100%
documents/search/_backend.py WriteBatch.__enter__   62% 16 6 0   25% 4 1   55%
documents/search/_backend.py WriteBatch.__exit__   100% 10 0 0   50% 6 3   81%
documents/search/_backend.py WriteBatch.add_or_update   0% 3 3 0   100% 0 0   0%
documents/search/_backend.py WriteBatch.remove   100% 1 0 0   100% 0 0   100%
documents/search/_backend.py WriteBatch.add_or_update_ids   0% 10 10 0   0% 4 0   0%
documents/search/_backend.py build_permission_filter   0% 6 6 0   100% 0 0   0%
documents/search/_backend.py TantivyBackend.__init__   100% 3 0 0   100% 0 0   100%
documents/search/_backend.py TantivyBackend._index   100% 2 0 0   100% 0 0   100%
documents/search/_backend.py TantivyBackend._schema   100% 2 0 0   100% 0 0   100%
documents/search/_backend.py TantivyBackend.open   80% 5 1 0   50% 2 1   71%
documents/search/_backend.py TantivyBackend.close   0% 2 2 0   100% 0 0   0%
documents/search/_backend.py TantivyBackend._ensure_open   50% 2 1 0   50% 2 1   50%
documents/search/_backend.py TantivyBackend._parse_query   100% 7 0 0   100% 4 0   100%
documents/search/_backend.py TantivyBackend._apply_permission_filter   50% 4 2 0   50% 2 1   50%
documents/search/_backend.py TantivyBackend._build_permission_filter   0% 2 2 0   100% 0 0   0%
documents/search/_backend.py TantivyBackend._build_tantivy_doc   0% 85 85 0   0% 50 0   0%
documents/search/_backend.py TantivyBackend.add_or_update   0% 8 8 0   100% 0 0   0%
documents/search/_backend.py TantivyBackend.remove   0% 8 8 0   100% 0 0   0%
documents/search/_backend.py TantivyBackend.highlight_hits   4% 49 47 0   6% 18 1   4%
documents/search/_backend.py TantivyBackend.search_ids   70% 20 6 0   62% 8 3   68%
documents/search/_backend.py TantivyBackend.autocomplete   90% 10 1 0   75% 4 1   86%
documents/search/_backend.py TantivyBackend.more_like_this_ids   0% 19 19 0   0% 2 0   0%
documents/search/_backend.py TantivyBackend.batch_update   100% 2 0 0   100% 0 0   100%
documents/search/_backend.py TantivyBackend.rebuild   0% 20 20 0   0% 2 0   0%
documents/search/_backend.py chunked   0% 3 3 0   0% 2 0   0%
documents/search/_backend.py _DocumentViewerStream.__iter__   0% 5 5 0   0% 4 0   0%
documents/search/_backend.py _bulk_get_viewer_permissions   0% 16 16 0   0% 4 0   0%
documents/search/_backend.py get_backend   83% 12 2 0   67% 6 2   78%
documents/search/_backend.py reset_backend   0% 5 5 0   0% 2 0   0%
documents/search/_backend.py (no function)   92% 115 9 0   50% 2 1   91%
documents/search/_errors.py InvalidDateQuery.__init__   0% 3 3 0   100% 0 0   0%
documents/search/_errors.py InvalidNumberQuery.__init__   0% 3 3 0   100% 0 0   0%
documents/search/_errors.py QueryTooLongError.__init__   0% 3 3 0   100% 0 0   0%
documents/search/_errors.py MultipleSearchQueryErrors.__init__   0% 2 2 0   100% 0 0   0%
documents/search/_errors.py search_query_error_messages   0% 3 3 0   0% 2 0   0%
documents/search/_errors.py (no function)   93% 14 1 0   50% 2 1   88%
documents/search/_fields.py (no function)   100% 5 0 0   100% 0 0   100%
documents/search/_query.py normalize_search_text   100% 1 0 0   100% 0 0   100%
documents/search/_query.py _user_facing_emit_message   0% 9 9 0   0% 6 0   0%
documents/search/_query.py _map_emit_error   0% 7 7 0   0% 4 0   0%
documents/search/_query.py _has_cjk   100% 1 0 0   100% 0 0   100%
documents/search/_query.py extract_cjk_text   100% 1 0 0   100% 0 0   100%
documents/search/_query.py _parse_cjk_text   100% 5 0 0   100% 0 0   100%
documents/search/_query.py _build_cjk_query   75% 4 1 0   50% 2 1   67%
documents/search/_query.py _get_emit_field_registry   100% 2 0 0   100% 0 0   100%
documents/search/_query.py _collapse   100% 3 0 0   100% 2 0   100%
documents/search/_query.py _leaf_span   100% 1 0 0   100% 0 0   100%
documents/search/_query.py _cjk_alternative   86% 22 3 0   67% 12 4   79%
documents/search/_query.py _fuzzy_alternative   0% 7 7 0   0% 2 0   0%
documents/search/_query.py _widen_leaf   64% 14 5 0   40% 10 4   54%
documents/search/_query.py _negated_leaf_ids   0% 23 23 0   0% 18 0   0%
documents/search/_query.py _any_of   100% 5 0 0   100% 4 0   100%
documents/search/_query.py _build_simple_token_query   100% 10 0 0   100% 4 0   100%
documents/search/_query.py parse_user_query   65% 17 6 0   50% 4 2   62%
documents/search/_query.py parse_user_query.emit_widened   100% 2 0 0   100% 0 0   100%
documents/search/_query.py _diagnostics_to_error   0% 2 2 0   100% 0 0   0%
documents/search/_query.py _single_diagnostic_to_error   0% 15 15 0   0% 10 0   0%
documents/search/_query.py parse_simple_query   100% 10 0 0   100% 6 0   100%
documents/search/_query.py parse_simple_text_highlight_query   0% 5 5 0   0% 2 0   0%
documents/search/_query.py parse_simple_text_query   100% 1 0 0   100% 0 0   100%
documents/search/_query.py parse_simple_title_query   100% 1 0 0   100% 0 0   100%
documents/search/_query.py (no function)   98% 65 1 0   50% 2 1   97%
documents/search/_registry.py _identity_analyzer   0% 1 1 0   100% 0 0   0%
documents/search/_registry.py _fold_normalizer   0% 1 1 0   100% 0 0   0%
documents/search/_registry.py _make_pattern_normalizer   100% 2 0 0   100% 0 0   100%
documents/search/_registry.py _make_pattern_normalizer._pattern_normalizer   100% 3 0 0   100% 0 0   100%
documents/search/_registry.py get_field_registry   100% 8 0 0   100% 2 0   100%
documents/search/_registry.py (no function)   94% 16 1 0   50% 2 1   89%
documents/search/_schema.py _public_field_descriptors   100% 10 0 0   100% 6 0   100%
documents/search/_schema.py field_descriptors   100% 1 0 0   100% 0 0   100%
documents/search/_schema.py schema_fingerprint   0% 2 2 0   100% 0 0   0%
documents/search/_schema.py build_schema   92% 12 1 0   90% 10 1   91%
documents/search/_schema.py needs_rebuild   0% 17 17 0   0% 8 0   0%
documents/search/_schema.py wipe_index   0% 4 4 0   0% 4 0   0%
documents/search/_schema.py _write_sentinels   0% 2 2 0   100% 0 0   0%
documents/search/_schema.py open_or_rebuild_index   18% 17 14 0   33% 6 2   22%
documents/search/_schema.py (no function)   97% 34 1 0   50% 2 1   94%
documents/search/_tokenizer.py register_tokenizers   100% 5 0 0   100% 0 0   100%
documents/search/_tokenizer.py paperless_text_analyzer   86% 7 1 0   75% 4 1   82%
documents/search/_tokenizer.py _pattern_stemmer   67% 6 2 0   50% 4 2   60%
documents/search/_tokenizer.py stem_pattern_text   71% 7 2 0   50% 4 2   64%
documents/search/_tokenizer.py _simple_analyzer   100% 1 0 0   100% 0 0   100%
documents/search/_tokenizer.py _bigram_analyzer   100% 1 0 0   100% 0 0   100%
documents/search/_tokenizer.py _simple_search_analyzer   100% 1 0 0   100% 0 0   100%
documents/search/_tokenizer.py simple_search_tokens   100% 1 0 0   100% 0 0   100%
documents/search/_tokenizer.py autocomplete_tokens   0% 1 1 0   100% 0 0   0%
documents/search/_tokenizer.py ascii_fold   100% 2 0 0   100% 0 0   100%
documents/search/_tokenizer.py (no function)   100% 23 0 0   100% 0 0   100%
documents/serialisers.py DynamicFieldsModelSerializer.__init__   100% 7 0 0   100% 4 0   100%
documents/serialisers.py DocumentUpdateFieldsModelSerializer._get_update_fields   0% 5 5 0   0% 2 0   0%
documents/serialisers.py DocumentUpdateFieldsModelSerializer.update   0% 12 12 0   0% 6 0   0%
documents/serialisers.py MatchingModelSerializer.get_slug   100% 1 0 0   100% 0 0   100%
documents/serialisers.py MatchingModelSerializer.validate   100% 6 0 0   100% 2 0   100%
documents/serialisers.py MatchingModelSerializer.validate_match   100% 7 0 0   100% 2 0   100%
documents/serialisers.py SetPermissionsMixin._validate_user_ids   100% 6 0 0   100% 4 0   100%
documents/serialisers.py SetPermissionsMixin._validate_group_ids   100% 6 0 0   100% 4 0   100%
documents/serialisers.py SetPermissionsMixin.validate_set_permissions   100% 12 0 0   90% 10 1   95%
documents/serialisers.py SetPermissionsMixin._set_permissions   100% 1 0 0   100% 0 0   100%
documents/serialisers.py SerializerWithPerms.__init__   100% 4 0 0   100% 0 0   100%
documents/serialisers.py SetPermissionsSerializer.to_internal_value   100% 5 0 0   100% 4 0   100%
documents/serialisers.py OwnedObjectSerializer.__init__   100% 9 0 0   100% 4 0   100%
documents/serialisers.py OwnedObjectSerializer._get_perms   100% 7 0 0   100% 4 0   100%
documents/serialisers.py OwnedObjectSerializer.get_permissions   100% 1 0 0   100% 0 0   100%
documents/serialisers.py OwnedObjectSerializer.get_user_can_change   33% 18 12 0   42% 12 1   37%
documents/serialisers.py OwnedObjectSerializer.get_shared_object_pks   31% 13 9 0   100% 0 0   31%
documents/serialisers.py OwnedObjectSerializer.get_shared_object_pks.get_pks_for_permission_type   0% 1 1 0   100% 0 0   0%
documents/serialisers.py OwnedObjectSerializer.get_is_shared_by_requester   0% 4 4 0   0% 2 0   0%
documents/serialisers.py OwnedObjectSerializer.validate_unique_together   100% 6 0 0   100% 4 0   100%
documents/serialisers.py OwnedObjectSerializer.create   100% 11 0 0   100% 6 0   100%
documents/serialisers.py OwnedObjectSerializer.update   90% 10 1 0   75% 4 1   86%
documents/serialisers.py OwnedObjectListSerializer.to_representation   100% 2 0 0   100% 0 0   100%
documents/serialisers.py ColorField.to_internal_value   0% 4 4 0   0% 4 0   0%
documents/serialisers.py ColorField.to_representation   0% 4 4 0   0% 4 0   0%
documents/serialisers.py TagSerializer.get_text_color   71% 7 2 0   100% 0 0   71%
documents/serialisers.py TagSerializer.get_children   100% 20 0 0   100% 6 0   100%
documents/serialisers.py TagSerializer.validate_color   100% 4 0 0   100% 2 0   100%
documents/serialisers.py TagSerializer.validate   65% 17 6 0   100% 2 0   68%
documents/serialisers.py CorrespondentField.get_queryset   100% 1 0 0   100% 0 0   100%
documents/serialisers.py TagsField.get_queryset   100% 1 0 0   100% 0 0   100%
documents/serialisers.py DocumentTypeField.get_queryset   100% 1 0 0   100% 0 0   100%
documents/serialisers.py StoragePathField.get_queryset   100% 1 0 0   100% 0 0   100%
documents/serialisers.py CustomFieldSerializer.validate   62% 13 5 0   42% 12 3   52%
documents/serialisers.py ReadWriteSerializerMethodField.__init__   100% 3 0 0   100% 0 0   100%
documents/serialisers.py ReadWriteSerializerMethodField.to_internal_value   0% 1 1 0   100% 0 0   0%
documents/serialisers.py validate_documentlink_targets   0% 6 6 0   0% 6 0   0%
documents/serialisers.py CustomFieldInstanceSerializer.create   0% 7 7 0   0% 2 0   0%
documents/serialisers.py CustomFieldInstanceSerializer.get_value   0% 1 1 0   100% 0 0   0%
documents/serialisers.py CustomFieldInstanceSerializer.validate   0% 35 35 0   0% 18 0   0%
documents/serialisers.py _get_viewable_duplicates   0% 8 8 0   0% 2 0   0%
documents/serialisers.py DocumentSerializer.get_page_count   0% 5 5 0   0% 2 0   0%
documents/serialisers.py DocumentSerializer.get_duplicate_documents   0% 7 7 0   0% 2 0   0%
documents/serialisers.py DocumentSerializer.get_versions   0% 12 12 0   0% 4 0   0%
documents/serialisers.py DocumentSerializer.get_versions.build_info   0% 1 1 0   100% 0 0   0%
documents/serialisers.py DocumentSerializer.get_original_file_name   0% 1 1 0   100% 0 0   0%
documents/serialisers.py DocumentSerializer.get_archived_file_name   0% 3 3 0   0% 2 0   0%
documents/serialisers.py DocumentSerializer.to_representation   0% 6 6 0   0% 4 0   0%
documents/serialisers.py DocumentSerializer.to_internal_value   0% 7 7 0   0% 6 0   0%
documents/serialisers.py DocumentSerializer.validate   0% 3 3 0   0% 2 0   0%
documents/serialisers.py DocumentSerializer.update   0% 47 47 0   0% 30 0   0%
documents/serialisers.py DocumentSerializer.__init__   100% 5 0 0   100% 2 0   100%
documents/serialisers.py SearchResultListSerializer.to_representation   100% 5 0 0   100% 0 0   100%
documents/serialisers.py SearchResultSerializer.fetch_documents   100% 1 0 0   100% 0 0   100%
documents/serialisers.py SearchResultSerializer.to_representation   0% 8 8 0   0% 2 0   0%
documents/serialisers.py SavedViewSerializer._get_api_version   100% 2 0 0   100% 0 0   100%
documents/serialisers.py SavedViewSerializer._update_legacy_visibility_preferences   7% 29 27 0   7% 14 1   7%
documents/serialisers.py SavedViewSerializer.to_representation   28% 18 13 0   12% 8 1   23%
documents/serialisers.py SavedViewSerializer.to_internal_value   19% 16 13 0   17% 6 1   18%
documents/serialisers.py SavedViewSerializer.validate   50% 10 5 0   40% 10 2   45%
documents/serialisers.py SavedViewSerializer.update   84% 19 3 0   75% 12 3   81%
documents/serialisers.py SavedViewSerializer.create   85% 13 2 0   67% 6 2   79%
documents/serialisers.py DocumentListSerializer._validate_document_id_list   71% 7 2 0   67% 6 2   69%
documents/serialisers.py DocumentListSerializer.validate_documents   100% 2 0 0   100% 0 0   100%
documents/serialisers.py DocumentSelectionSerializer.validate   100% 10 0 0   100% 6 0   100%
documents/serialisers.py SourceModeValidationMixin.validate_source_mode   100% 3 0 0   100% 2 0   100%
documents/serialisers.py _validate_rotation_degrees   100% 3 0 0   100% 2 0   100%
documents/serialisers.py RotateDocumentsSerializer.validate_degrees   100% 1 0 0   100% 0 0   100%
documents/serialisers.py MergeDocumentsAsVersionsSerializer.validate_version_label   100% 4 0 0   100% 2 0   100%
documents/serialisers.py MergeDocumentsAsVersionsSerializer.validate   21% 14 11 0   10% 10 1   17%
documents/serialisers.py PdfEditOperationSerializer.validate_rotate   100% 1 0 0   100% 0 0   100%
documents/serialisers.py EditPdfDocumentsSerializer.validate   44% 16 9 0   29% 14 2   37%
documents/serialisers.py BulkEditSerializer._validate_tag_id_list   0% 7 7 0   0% 6 0   0%
documents/serialisers.py BulkEditSerializer._validate_custom_field_id_list_or_dict   0% 12 12 0   0% 6 0   0%
documents/serialisers.py BulkEditSerializer._validate_custom_field_values   0% 13 13 0   0% 8 0   0%
documents/serialisers.py BulkEditSerializer.validate_method   97% 33 1 0   97% 32 1   97%
documents/serialisers.py BulkEditSerializer._validate_parameters_tags   29% 7 5 0   50% 2 1   33%
documents/serialisers.py BulkEditSerializer._validate_parameters_document_type   22% 9 7 0   25% 4 1   23%
documents/serialisers.py BulkEditSerializer._validate_parameters_correspondent   22% 9 7 0   25% 4 1   23%
documents/serialisers.py BulkEditSerializer._validate_storage_path   22% 9 7 0   25% 4 1   23%
documents/serialisers.py BulkEditSerializer._validate_parameters_modify_tags   33% 6 4 0   25% 4 1   30%
documents/serialisers.py BulkEditSerializer._validate_parameters_modify_custom_fields   29% 7 5 0   25% 4 1   27%
documents/serialisers.py BulkEditSerializer._validate_owner   0% 5 5 0   100% 0 0   0%
documents/serialisers.py BulkEditSerializer._validate_parameters_set_permissions   20% 10 8 0   12% 8 1   17%
documents/serialisers.py BulkEditSerializer._validate_parameters_rotate   29% 7 5 0   50% 2 1   33%
documents/serialisers.py BulkEditSerializer._validate_source_mode   0% 2 2 0   100% 0 0   0%
documents/serialisers.py BulkEditSerializer._validate_parameters_split   0% 23 23 0   0% 14 0   0%
documents/serialisers.py BulkEditSerializer._validate_parameters_delete_pages   33% 6 4 0   17% 6 1   25%
documents/serialisers.py BulkEditSerializer._validate_parameters_merge   50% 8 4 0   25% 8 2   38%
documents/serialisers.py BulkEditSerializer._validate_parameters_edit_pdf   0% 27 27 0   0% 22 0   0%
documents/serialisers.py BulkEditSerializer._validate_parameters_reprocess   50% 4 2 0   25% 4 1   38%
documents/serialisers.py BulkEditSerializer.validate_parameters_remove_password   50% 4 2 0   25% 4 1   38%
documents/serialisers.py BulkEditSerializer.validate   90% 42 4 0   89% 38 4   90%
documents/serialisers.py PostDocumentSerializer.validate_document   86% 7 1 0   75% 4 1   82%
documents/serialisers.py PostDocumentSerializer.validate_correspondent   0% 3 3 0   0% 2 0   0%
documents/serialisers.py PostDocumentSerializer.validate_document_type   67% 3 1 0   50% 2 1   60%
documents/serialisers.py PostDocumentSerializer.validate_storage_path   67% 3 1 0   50% 2 1   60%
documents/serialisers.py PostDocumentSerializer.validate_tags   67% 3 1 0   50% 2 1   60%
documents/serialisers.py PostDocumentSerializer.validate_custom_fields   39% 28 17 0   58% 12 3   45%
documents/serialisers.py PostDocumentSerializer.validate_created   100% 2 0 0   100% 2 0   100%
documents/serialisers.py DocumentVersionLabelSerializer.validate_version_label   100% 4 0 0   100% 2 0   100%
documents/serialisers.py BulkDownloadSerializer.validate_compression   100% 2 0 0   100% 0 0   100%
documents/serialisers.py EmailSerializer.validate_addresses   80% 10 2 0   50% 4 2   71%
documents/serialisers.py EmailSerializer.validate_documents   75% 4 1 0   50% 2 1   67%
documents/serialisers.py StoragePathSerializer.validate_path   71% 7 2 0   50% 4 2   64%
documents/serialisers.py StoragePathSerializer.update   75% 4 1 0   50% 2 1   67%
documents/serialisers.py UiSettingsViewSerializer.validate_settings   33% 6 4 0   50% 2 1   38%
documents/serialisers.py UiSettingsViewSerializer.create   100% 2 0 0   100% 0 0   100%
documents/serialisers.py TaskSerializerV9.get_result   0% 11 11 0   0% 10 0   0%
documents/serialisers.py TaskSerializerV9.get_task_name   0% 1 1 0   100% 0 0   0%
documents/serialisers.py TaskSerializerV9.get_task_file_name   0% 3 3 0   0% 2 0   0%
documents/serialisers.py TaskSerializerV9.get_status   0% 1 1 0   100% 0 0   0%
documents/serialisers.py TaskSerializerV9.get_type   0% 1 1 0   100% 0 0   0%
documents/serialisers.py TaskSerializerV9.get_related_document   0% 2 2 0   100% 0 0   0%
documents/serialisers.py TaskSerializerV9.get_duplicate_documents   0% 14 14 0   0% 8 0   0%
documents/serialisers.py AcknowledgeTasksViewSerializer._validate_task_id_list   75% 8 2 0   67% 6 2   71%
documents/serialisers.py AcknowledgeTasksViewSerializer.validate_tasks   100% 2 0 0   100% 0 0   100%
documents/serialisers.py AcknowledgeTasksViewSerializer.validate   100% 7 0 0   100% 4 0   100%
documents/serialisers.py ShareLinkSerializer.create   100% 2 0 0   100% 0 0   100%
documents/serialisers.py ShareLinkSerializer.validate_document   0% 3 3 0   0% 2 0   0%
documents/serialisers.py ShareLinkBundleSerializer.validate_document_ids   100% 4 0 0   100% 2 0   100%
documents/serialisers.py ShareLinkBundleSerializer.create   0% 16 16 0   0% 4 0   0%
documents/serialisers.py ShareLinkBundleSerializer.get_document_count   0% 1 1 0   100% 0 0   0%
documents/serialisers.py BulkEditObjectsSerializer.get_object_class   100% 10 0 0   88% 8 1   94%
documents/serialisers.py BulkEditObjectsSerializer._validate_objects   67% 9 3 0   50% 6 3   60%
documents/serialisers.py BulkEditObjectsSerializer._validate_permissions   100% 1 0 0   100% 0 0   100%
documents/serialisers.py BulkEditObjectsSerializer.validate   94% 18 1 0   83% 12 2   90%
documents/serialisers.py WorkflowTriggerSerializer.validate   100% 13 0 0   100% 10 0   100%
documents/serialisers.py WorkflowTriggerSerializer.normalize_workflow_trigger_sources   100% 2 0 0   100% 2 0   100%
documents/serialisers.py WorkflowTriggerSerializer.create   100% 2 0 0   100% 0 0   100%
documents/serialisers.py WorkflowTriggerSerializer.update   100% 2 0 0   100% 0 0   100%
documents/serialisers.py WorkflowActionWebhookSerializer.validate_url   50% 2 1 0   100% 0 0   50%
documents/serialisers.py WorkflowActionSerializer.validate   91% 23 2 0   89% 18 2   90%
documents/serialisers.py WorkflowSerializer.validate   94% 16 1 0   88% 8 1   92%
documents/serialisers.py WorkflowSerializer.update_triggers_and_actions   95% 106 5 0   98% 66 1   97%
documents/serialisers.py WorkflowSerializer.prune_triggers_and_actions   100% 4 0 0   100% 0 0   100%
documents/serialisers.py WorkflowSerializer.create   100% 9 0 0   67% 6 2   87%
documents/serialisers.py WorkflowSerializer.update   100% 6 0 0   100% 0 0   100%
documents/serialisers.py TrashSerializer.validate_documents   100% 4 0 0   100% 2 0   100%
documents/serialisers.py StoragePathTestSerializer.__init__   88% 8 1 0   75% 4 1   83%
documents/serialisers.py (no function)   99% 552 4 0   50% 4 2   99%
documents/settings.py (no function)   0% 9 9 0   100% 0 0   0%
documents/signals/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
documents/signals/handlers.py add_inbox_tags   0% 5 5 0   0% 2 0   0%
documents/signals/handlers.py set_correspondent   0% 15 15 0   0% 8 0   0%
documents/signals/handlers.py set_document_type   0% 15 15 0   0% 8 0   0%
documents/signals/handlers.py set_tags   0% 12 12 0   0% 6 0   0%
documents/signals/handlers.py set_storage_path   0% 15 15 0   0% 8 0   0%
documents/signals/handlers.py cleanup_document_deletion   44% 32 18 0   64% 14 3   50%
documents/signals/handlers.py _path_matches_checksum   0% 3 3 0   0% 2 0   0%
documents/signals/handlers.py _filename_template_uses_custom_fields   0% 8 8 0   0% 6 0   0%
documents/signals/handlers.py update_filename_and_move_files   48% 90 47 0   37% 46 13   44%
documents/signals/handlers.py update_filename_and_move_files.validate_move   25% 12 9 0   50% 6 3   33%
documents/signals/handlers.py process_cf_select_update   0% 4 4 0   0% 2 0   0%
documents/signals/handlers.py check_paths_and_prune_custom_fields   50% 2 1 0   50% 2 1   50%
documents/signals/handlers.py cleanup_custom_field_deletion   44% 9 5 0   33% 6 2   40%
documents/signals/handlers.py update_llm_suggestions_cache   100% 2 0 0   100% 0 0   100%
documents/signals/handlers.py cleanup_user_deletion   54% 26 12 0   61% 18 7   57%
documents/signals/handlers.py add_to_index   0% 4 4 0   0% 2 0   0%
documents/signals/handlers.py run_workflows_added   0% 1 1 0   100% 0 0   0%
documents/signals/handlers.py run_workflows_updated   0% 1 1 0   100% 0 0   0%
documents/signals/handlers.py send_websocket_document_updated   0% 5 5 0   100% 0 0   0%
documents/signals/handlers.py run_workflows   0% 65 65 0   0% 50 0   0%
documents/signals/handlers.py _extract_input_data   74% 34 9 0   64% 28 8   69%
documents/signals/handlers.py _determine_trigger_source   57% 7 3 0   50% 2 1   56%
documents/signals/handlers.py _extract_owner_id   83% 6 1 0   75% 4 1   80%
documents/signals/handlers.py before_task_publish_handler   78% 18 4 0   62% 8 3   73%
documents/signals/handlers.py task_prerun_handler   0% 9 9 0   0% 4 0   0%
documents/signals/handlers.py task_postrun_handler   0% 32 32 0   0% 14 0   0%
documents/signals/handlers.py task_failure_handler   0% 24 24 0   0% 12 0   0%
documents/signals/handlers.py task_revoked_handler   0% 10 10 0   0% 4 0   0%
documents/signals/handlers.py close_connection_pool_on_worker_init   0% 3 3 0   0% 4 0   0%
documents/signals/handlers.py close_connection_pool_on_worker_shutdown   0% 3 3 0   0% 4 0   0%
documents/signals/handlers.py add_or_update_document_in_llm_index   0% 6 6 0   0% 4 0   0%
documents/signals/handlers.py delete_document_from_llm_index   50% 4 2 0   50% 2 1   50%
documents/signals/handlers.py (no function)   97% 126 4 0   50% 2 1   96%
documents/tasks.py index_optimize   0% 1 1 0   100% 0 0   0%
documents/tasks.py index_document   0% 8 8 0   100% 0 0   0%
documents/tasks.py remove_document_from_index   0% 3 3 0   100% 0 0   0%
documents/tasks.py train_classifier   0% 16 16 0   0% 8 0   0%
documents/tasks.py consume_file   0% 35 35 0   0% 8 0   0%
documents/tasks.py sanity_check   0% 20 20 0   0% 14 0   0%
documents/tasks.py bulk_update_documents   0% 12 12 0   0% 4 0   0%
documents/tasks.py _read_barcodes_for_reprocess   0% 9 9 0   0% 2 0   0%
documents/tasks.py update_document_content_maybe_archive_file   0% 44 44 0   0% 14 0   0%
documents/tasks.py empty_trash   77% 13 3 0   50% 4 2   71%
documents/tasks.py check_scheduled_workflows   0% 40 40 0   0% 26 0   0%
documents/tasks.py update_document_parent_tags   0% 19 19 0   0% 12 0   0%
documents/tasks.py llmindex_index   0% 6 6 0   0% 2 0   0%
documents/tasks.py apply_ai_suggestions   0% 15 15 0   0% 4 0   0%
documents/tasks.py update_document_in_llm_index   0% 1 1 0   100% 0 0   0%
documents/tasks.py remove_document_from_llm_index   0% 1 1 0   100% 0 0   0%
documents/tasks.py build_share_link_bundle   0% 48 48 0   0% 4 0   0%
documents/tasks.py cleanup_expired_share_link_bundles   0% 11 11 0   0% 4 0   0%
documents/tasks.py (no function)   100% 116 0 0   50% 2 1   99%
documents/templating/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
documents/templating/environment.py JinjaEnvironment.__init__   100% 2 0 0   100% 0 0   100%
documents/templating/environment.py JinjaEnvironment.is_safe_callable   0% 3 3 0   0% 2 0   0%
documents/templating/environment.py (no function)   100% 5 0 0   100% 0 0   100%
documents/templating/filepath.py FilePathTemplate.render   100% 3 0 0   100% 0 0   100%
documents/templating/filepath.py FilePathTemplate.render.clean_filepath   100% 4 0 0   100% 0 0   100%
documents/templating/filepath.py PlaceholderString.__new__   100% 1 0 0   100% 0 0   100%
documents/templating/filepath.py PlaceholderString.__bool__   0% 1 1 0   100% 0 0   0%
documents/templating/filepath.py PlaceholderString.__eq__   0% 3 3 0   0% 2 0   0%
documents/templating/filepath.py PlaceholderString.__ne__   0% 1 1 0   100% 0 0   0%
documents/templating/filepath.py MatchingModelContext.__init__   100% 3 0 0   100% 0 0   100%
documents/templating/filepath.py MatchingModelContext.__str__   0% 1 1 0   100% 0 0   0%
documents/templating/filepath.py create_dummy_document   100% 2 0 0   100% 0 0   100%
documents/templating/filepath.py get_creation_date_context   100% 1 0 0   100% 0 0   100%
documents/templating/filepath.py get_added_date_context   100% 2 0 0   100% 0 0   100%
documents/templating/filepath.py get_basic_metadata_context   100% 1 0 0   100% 0 0   100%
documents/templating/filepath.py get_safe_document_context   100% 1 0 0   100% 0 0   100%
documents/templating/filepath.py get_tags_context   100% 1 0 0   100% 0 0   100%
documents/templating/filepath.py get_custom_fields_context   62% 13 5 0   50% 8 2   57%
documents/templating/filepath.py is_safe_relative_path   67% 6 2 0   50% 4 2   60%
documents/templating/filepath.py validate_filepath_template_and_render   42% 24 14 0   50% 4 2   43%
documents/templating/filepath.py (no function)   100% 53 0 0   100% 0 0   100%
documents/templating/filters.py localize_date   0% 11 11 0   0% 6 0   0%
documents/templating/filters.py format_datetime   0% 3 3 0   0% 2 0   0%
documents/templating/filters.py get_cf_value   0% 5 5 0   0% 4 0   0%
documents/templating/filters.py (no function)   100% 9 0 0   100% 0 0   100%
documents/templating/utils.py convert_format_str_to_template_format   100% 4 0 0   100% 0 0   100%
documents/templating/utils.py convert_format_str_to_template_format.replace_with_django   0% 2 2 0   100% 0 0   0%
documents/templating/utils.py (no function)   100% 2 0 0   100% 0 0   100%
documents/templating/workflows.py validate_workflow_template   50% 10 5 0   50% 2 1   50%
documents/templating/workflows.py parse_w_workflow_placeholders   0% 25 25 0   0% 8 0   0%
documents/templating/workflows.py (no function)   100% 25 0 0   100% 0 0   100%
documents/utils.py identity   0% 1 1 0   100% 0 0   0%
documents/utils.py QuerySetStream.__init__   0% 2 2 0   100% 0 0   0%
documents/utils.py QuerySetStream.__len__   0% 1 1 0   100% 0 0   0%
documents/utils.py QuerySetStream.__iter__   0% 1 1 0   100% 0 0   0%
documents/utils.py _coerce_to_path   0% 1 1 0   100% 0 0   0%
documents/utils.py copy_basic_file_stats   0% 6 6 0   100% 0 0   0%
documents/utils.py copy_file_with_basic_stats   0% 6 6 0   100% 0 0   0%
documents/utils.py maybe_override_pixel_limit   0% 6 6 0   0% 4 0   0%
documents/utils.py run_subprocess   0% 17 17 0   0% 12 0   0%
documents/utils.py get_boolean   100% 1 0 0   100% 0 0   100%
documents/utils.py compute_checksum   0% 5 5 0   0% 2 0   0%
documents/utils.py (no function)   94% 33 2 0   50% 2 1   91%
documents/validators.py uri_validator   50% 12 6 0   17% 6 1   39%
documents/validators.py url_validator   100% 1 0 0   100% 0 0   100%
documents/validators.py (no function)   100% 5 0 0   100% 0 0   100%
documents/versioning.py versions_newest_first   100% 1 0 0   100% 0 0   100%
documents/versioning.py annotate_effective_content   100% 3 0 0   100% 2 0   100%
documents/versioning.py latest_version_content_prefetch   100% 1 0 0   100% 0 0   100%
documents/versioning.py has_prefetched_effective_content   0% 6 6 0   0% 4 0   0%
documents/versioning.py sort_versions_newest_first   0% 1 1 0   100% 0 0   0%
documents/versioning.py _document_manager   100% 1 0 0   100% 0 0   100%
documents/versioning.py get_request_version_param   0% 3 3 0   0% 2 0   0%
documents/versioning.py get_root_document   29% 7 5 0   25% 4 1   27%
documents/versioning.py get_latest_version_for_root   100% 3 0 0   100% 0 0   100%
documents/versioning.py latest_version   0% 9 9 0   0% 6 0   0%
documents/versioning.py resolve_requested_version_for_root   0% 14 14 0   0% 6 0   0%
documents/versioning.py resolve_effective_document   0% 6 6 0   0% 4 0   0%
documents/versioning.py resolve_effective_document_by_pk   93% 14 1 0   83% 6 1   90%
documents/versioning.py (no function)   97% 38 1 0   50% 2 1   95%
documents/views.py _get_tantivy_query_and_mode   83% 12 2 0   75% 8 2   80%
documents/views.py _get_more_like_id   0% 8 8 0   0% 2 0   0%
documents/views.py IndexView.get_frontend_language   0% 8 8 0   0% 4 0   0%
documents/views.py IndexView.get_context_data   0% 10 10 0   100% 0 0   0%
documents/views.py PassUserMixin.get_serializer   78% 9 2 0   100% 2 0   82%
documents/views.py BulkPermissionMixin._get_object_perms   92% 13 1 0   83% 6 1   89%
documents/views.py BulkPermissionMixin.get_serializer_context   95% 19 1 0   83% 6 1   92%
documents/views.py PermissionsAwareDocumentCountMixin._get_document_count_source_field   50% 4 2 0   50% 2 1   50%
documents/views.py PermissionsAwareDocumentCountMixin.get_document_count_filter   100% 3 0 0   100% 0 0   100%
documents/views.py PermissionsAwareDocumentCountMixin.get_queryset   100% 6 0 0   100% 2 0   100%
documents/views.py CorrespondentViewSet.list   67% 3 1 0   50% 2 1   60%
documents/views.py CorrespondentViewSet.retrieve   100% 2 0 0   100% 0 0   100%
documents/views.py TagViewSet.get_serializer_context   100% 5 0 0   100% 2 0   100%
documents/views.py TagViewSet.list   95% 21 1 0   83% 6 1   93%
documents/views.py TagViewSet.perform_update   80% 5 1 0   50% 2 1   71%
documents/views.py DocumentViewSet._get_selection_data_for_queryset   0% 7 7 0   100% 0 0   0%
documents/views.py DocumentViewSet._content_filter_params   100% 4 0 0   50% 2 1   83%
documents/views.py DocumentViewSet._needs_effective_content_annotation   100% 2 0 0   100% 0 0   100%
documents/views.py DocumentViewSet._requested_fields   100% 2 0 0   100% 0 0   100%
documents/views.py DocumentViewSet._needs_effective_content_prefetch   100% 2 0 0   100% 0 0   100%
documents/views.py DocumentViewSet.get_queryset   100% 8 0 0   100% 4 0   100%
documents/views.py DocumentViewSet.get_serializer   80% 10 2 0   100% 0 0   80%
documents/views.py DocumentViewSet.root   50% 8 4 0   0% 2 0   40%
documents/views.py DocumentViewSet.retrieve   10% 10 9 0   0% 6 0   6%
documents/views.py DocumentViewSet.update   7% 27 25 0   0% 8 0   6%
documents/views.py DocumentViewSet.list   17% 12 10 0   25% 4 1   19%
documents/views.py DocumentViewSet.destroy   22% 9 7 0   0% 2 0   18%
documents/views.py DocumentViewSet.original_requested   0% 1 1 0   100% 0 0   0%
documents/views.py DocumentViewSet._resolve_file_doc   0% 7 7 0   0% 4 0   0%
documents/views.py DocumentViewSet._get_effective_file_doc   0% 3 3 0   0% 2 0   0%
documents/views.py DocumentViewSet._resolve_request_and_root_doc   56% 9 4 0   0% 2 0   45%
documents/views.py DocumentViewSet.file_response   20% 5 4 0   0% 2 0   14%
documents/views.py DocumentViewSet.get_metadata   0% 12 12 0   0% 4 0   0%
documents/views.py DocumentViewSet.get_filesize   0% 3 3 0   0% 2 0   0%
documents/views.py DocumentViewSet.metadata   4% 23 22 0   0% 6 0   3%
documents/views.py DocumentViewSet.suggestions   6% 16 15 0   0% 6 0   5%
documents/views.py DocumentViewSet.ai_suggestions   3% 35 34 0   0% 6 0   2%
documents/views.py DocumentViewSet.ai_suggestions.resolve_choice   0% 9 9 0   0% 4 0   0%
documents/views.py DocumentViewSet.preview   12% 8 7 0   0% 2 0   10%
documents/views.py DocumentViewSet.thumb   11% 9 8 0   0% 2 0   9%
documents/views.py DocumentViewSet.download   75% 4 1 0   100% 0 0   75%
documents/views.py DocumentViewSet.notes   12% 52 46 0   0% 18 0   9%
documents/views.py DocumentViewSet.share_links   42% 12 7 0   0% 4 0   31%
documents/views.py DocumentViewSet.history   50% 12 6 0   17% 6 1   39%
documents/views.py DocumentViewSet.email_document   100% 3 0 0   100% 0 0   100%
documents/views.py DocumentViewSet.email_documents   9% 23 21 0   0% 4 0   7%
documents/views.py DocumentViewSet.update_version   23% 30 23 0   0% 6 0   19%
documents/views.py DocumentViewSet._get_root_doc_for_version_action   80% 5 1 0   100% 0 0   80%
documents/views.py DocumentViewSet._get_version_doc_for_root   0% 7 7 0   0% 2 0   0%
documents/views.py DocumentViewSet.delete_version   5% 20 19 0   0% 6 0   4%
documents/views.py DocumentViewSet.update_version_label   19% 16 13 0   0% 4 0   15%
documents/views.py ChatStreamingView.post   14% 21 18 0   17% 6 1   15%
documents/views.py UnifiedSearchViewSet.get_serializer_class   100% 3 0 0   100% 2 0   100%
documents/views.py UnifiedSearchViewSet.get_serializer_context   100% 3 0 0   100% 2 0   100%
documents/views.py UnifiedSearchViewSet._get_active_search_params   100% 2 0 0   100% 0 0   100%
documents/views.py UnifiedSearchViewSet._is_search_request   100% 1 0 0   100% 0 0   100%
documents/views.py UnifiedSearchViewSet.list   76% 42 10 0   50% 10 3   71%
documents/views.py UnifiedSearchViewSet.list.parse_search_params   85% 13 2 0   100% 2 0   87%
documents/views.py UnifiedSearchViewSet.list.intersect_and_order   25% 8 6 0   17% 6 1   21%
documents/views.py UnifiedSearchViewSet.list.run_text_search   90% 10 1 0   50% 2 1   83%
documents/views.py UnifiedSearchViewSet.list.run_more_like_this   0% 7 7 0   100% 0 0   0%
documents/views.py UnifiedSearchViewSet.next_asn   100% 2 0 0   100% 0 0   100%
documents/views.py LogViewSet.get_log_file   100% 1 0 0   100% 0 0   100%
documents/views.py LogViewSet.retrieve   95% 20 1 0   90% 10 1   93%
documents/views.py LogViewSet.list   100% 2 0 0   100% 0 0   100%
documents/views.py DocumentSelectionMixin._get_search_document_ids   15% 20 17 0   17% 6 1   15%
documents/views.py DocumentSelectionMixin._resolve_document_ids   92% 12 1 0   83% 6 1   89%
documents/views.py DocumentOperationPermissionMixin._has_document_permissions   17% 12 10 0   12% 8 1   15%
documents/views.py DocumentOperationPermissionMixin._execute_document_action   75% 16 4 0   83% 6 1   77%
documents/views.py BulkEditView._snapshot_field   33% 9 6 0   33% 6 2   33%
documents/views.py BulkEditView.post   94% 31 2 0   86% 14 2   91%
documents/views.py RotateDocumentsView.post   100% 3 0 0   100% 0 0   100%
documents/views.py MergeDocumentsView.post   100% 3 0 0   100% 0 0   100%
documents/views.py MergeDocumentsAsVersionsView.post   67% 3 1 0   100% 0 0   67%
documents/views.py DeleteDocumentsView.post   100% 3 0 0   100% 0 0   100%
documents/views.py ReprocessDocumentsView.post   100% 3 0 0   100% 0 0   100%
documents/views.py EditPdfDocumentsView.post   67% 3 1 0   100% 0 0   67%
documents/views.py RemovePasswordDocumentsView.post   100% 3 0 0   100% 0 0   100%
documents/views.py PostDocumentView.post   90% 29 3 0   50% 6 3   83%
documents/views.py SelectionDataView.post   92% 13 1 0   50% 2 1   87%
documents/views.py SearchAutoCompleteView.get   100% 11 0 0   100% 6 0   100%
documents/views.py GlobalSearchView.get   98% 56 1 0   80% 10 2   95%
documents/views.py StatisticsView.get   100% 15 0 0   100% 0 0   100%
documents/views.py BulkDownloadView.post   88% 34 4 0   90% 10 1   89%
documents/views.py StoragePathViewSet.get_permissions   100% 3 0 0   100% 2 0   100%
documents/views.py StoragePathViewSet.destroy   83% 6 1 0   50% 2 1   75%
documents/views.py StoragePathViewSet.test   20% 10 8 0   0% 2 0   17%
documents/views.py UiSettingsView.get   74% 38 10 0   50% 18 5   66%
documents/views.py UiSettingsView.post   100% 4 0 0   100% 0 0   100%
documents/views.py RemoteVersionView.get   72% 18 5 0   75% 4 1   73%
documents/views.py _TasksViewSetSchema._get_paginator   100% 3 0 0   100% 2 0   100%
documents/views.py TasksViewSet.get_serializer_class   67% 3 1 0   50% 2 1   60%
documents/views.py TasksViewSet.paginate_queryset   67% 3 1 0   50% 2 1   60%
documents/views.py TasksViewSet.get_queryset   44% 18 10 0   33% 12 2   40%
documents/views.py TasksViewSet.get_status_count_queryset   86% 7 1 0   75% 4 1   82%
documents/views.py TasksViewSet.acknowledge   100% 9 0 0   100% 2 0   100%
documents/views.py TasksViewSet.get_permissions   100% 3 0 0   100% 2 0   100%
documents/views.py TasksViewSet.summary   91% 11 1 0   50% 2 1   85%
documents/views.py TasksViewSet.status_counts   100% 3 0 0   100% 0 0   100%
documents/views.py TasksViewSet.active   100% 3 0 0   100% 0 0   100%
documents/views.py TasksViewSet.run   71% 14 4 0   75% 4 1   72%
documents/views.py ShareLinkBundleViewSet.get_permissions   100% 4 0 0   100% 2 0   100%
documents/views.py ShareLinkBundleViewSet.get_queryset   100% 1 0 0   100% 0 0   100%
documents/views.py ShareLinkBundleViewSet.create   29% 28 20 0   17% 6 1   26%
documents/views.py ShareLinkBundleViewSet.rebuild   7% 14 13 0   0% 2 0   6%
documents/views.py SharedLinkView.get   0% 25 25 0   0% 12 0   0%
documents/views.py serve_file   0% 21 21 0   0% 10 0   0%
documents/views.py BulkEditObjectsView.post   83% 46 8 0   67% 18 4   78%
documents/views.py WorkflowTriggerViewSet.partial_update   100% 3 0 0   100% 2 0   100%
documents/views.py WorkflowActionViewSet.partial_update   100% 3 0 0   100% 2 0   100%
documents/views.py SystemStatusView.get   62% 111 42 0   41% 32 9   57%
documents/views.py TrashView.get   100% 2 0 0   100% 0 0   100%
documents/views.py TrashView.post   73% 22 6 0   64% 14 5   69%
documents/views.py serve_logo   0% 15 15 0   0% 6 0   0%
documents/views.py (no function)   99% 666 1 0   50% 4 2   99%
documents/workflows/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
documents/workflows/actions.py build_workflow_action_context   0% 8 8 0   0% 2 0   0%
documents/workflows/actions.py execute_email_action   0% 21 21 0   0% 10 0   0%
documents/workflows/actions.py execute_webhook_action   0% 25 25 0   0% 12 0   0%
documents/workflows/actions.py execute_password_removal_action   0% 18 18 0   0% 6 0   0%
documents/workflows/actions.py execute_password_removal_action.handler   0% 4 4 0   0% 2 0   0%
documents/workflows/actions.py execute_move_to_trash_action   0% 7 7 0   0% 4 0   0%
documents/workflows/actions.py (no function)   100% 25 0 0   100% 0 0   100%
documents/workflows/ai.py resolve_date   0% 6 6 0   0% 2 0   0%
documents/workflows/ai.py resolve_object   0% 11 11 0   0% 8 0   0%
documents/workflows/ai.py resolve_tags   0% 9 9 0   0% 6 0   0%
documents/workflows/ai.py apply_ai_suggestions_to_document   0% 66 66 0   0% 34 0   0%
documents/workflows/ai.py apply_ai_suggestions_to_document.should_set   0% 1 1 0   100% 0 0   0%
documents/workflows/ai.py (no function)   0% 32 32 0   100% 0 0   0%
documents/workflows/mutations.py apply_assignment_to_document   0% 30 30 0   0% 24 0   0%
documents/workflows/mutations.py apply_assignment_to_overrides   0% 27 27 0   0% 22 0   0%
documents/workflows/mutations.py apply_removal_to_document   0% 32 32 0   0% 30 0   0%
documents/workflows/mutations.py apply_removal_to_overrides   0% 39 39 0   0% 40 0   0%
documents/workflows/mutations.py (no function)   100% 14 0 0   100% 0 0   100%
documents/workflows/utils.py get_workflows_for_trigger   0% 5 5 0   0% 2 0   0%
documents/workflows/utils.py (no function)   100% 9 0 0   100% 0 0   100%
documents/workflows/webhooks.py send_webhook   0% 20 20 0   0% 4 0   0%
documents/workflows/webhooks.py (no function)   100% 9 0 0   100% 0 0   100%
manage.py (no function)   100% 6 0 0   50% 2 1   88%
paperless/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
paperless/adapter.py CustomAccountAdapter.is_open_for_signup   0% 4 4 0   0% 2 0   0%
paperless/adapter.py CustomAccountAdapter.pre_authenticate   0% 3 3 0   0% 2 0   0%
paperless/adapter.py CustomAccountAdapter.is_safe_url   86% 7 1 0   50% 2 1   78%
paperless/adapter.py CustomAccountAdapter.get_reset_password_from_key_url   0% 5 5 0   0% 2 0   0%
paperless/adapter.py CustomAccountAdapter.save_user   0% 12 12 0   0% 4 0   0%
paperless/adapter.py CustomSocialAccountAdapter.is_open_for_signup   0% 2 2 0   100% 0 0   0%
paperless/adapter.py CustomSocialAccountAdapter.get_connect_redirect_url   0% 2 2 0   100% 0 0   0%
paperless/adapter.py CustomSocialAccountAdapter.save_user   0% 9 9 0   0% 2 0   0%
paperless/adapter.py CustomSocialAccountAdapter.on_authentication_error   0% 2 2 0   100% 0 0   0%
paperless/adapter.py DrfTokenStrategy.create_access_token   0% 4 4 0   0% 2 0   0%
paperless/adapter.py (no function)   100% 29 0 0   100% 0 0   100%
paperless/admin.py PaperlessUserForm.clean   0% 6 6 0   0% 2 0   0%
paperless/admin.py PaperlessUserAdmin.get_form   0% 3 3 0   100% 0 0   0%
paperless/admin.py (no function)   100% 14 0 0   100% 0 0   100%
paperless/apps.py PaperlessConfig.ready   100% 5 0 0   100% 0 0   100%
paperless/apps.py (no function)   100% 8 0 0   100% 0 0   100%
paperless/asgi.py (no function)   100% 13 0 0   100% 0 0   100%
paperless/auth.py AutoLoginMiddleware.process_request   0% 7 7 0   0% 2 0   0%
paperless/auth.py AngularApiAuthenticationOverride.authenticate   0% 5 5 0   0% 2 0   0%
paperless/auth.py HttpRemoteUserMiddleware.__call__   0% 3 3 0   0% 2 0   0%
paperless/auth.py PaperlessBasicAuthentication.authenticate   83% 6 1 0   50% 2 1   75%
paperless/auth.py PaperlessBasicAuthentication.authenticate_header   100% 4 0 0   100% 2 0   100%
paperless/auth.py (no function)   100% 23 0 0   100% 0 0   100%
paperless/celery.py on_worker_process_init   0% 2 2 0   100% 0 0   0%
paperless/celery.py (no function)   100% 13 0 0   100% 0 0   100%
paperless/checks.py path_check   55% 20 9 0   67% 6 2   58%
paperless/checks.py paths_check   100% 1 0 0   100% 0 0   100%
paperless/checks.py binaries_check   88% 8 1 0   75% 4 1   83%
paperless/checks.py debug_mode_check   67% 3 1 0   50% 2 1   60%
paperless/checks.py settings_values_check   100% 4 0 0   100% 0 0   100%
paperless/checks.py settings_values_check._ocrmypdf_settings_check   60% 10 4 0   50% 8 4   56%
paperless/checks.py settings_values_check._timezone_validate   80% 5 1 0   50% 2 1   71%
paperless/checks.py settings_values_check._email_certificate_validate   75% 4 1 0   50% 2 1   67%
paperless/checks.py audit_log_check   83% 6 1 0   50% 2 1   75%
paperless/checks.py check_v3_minimum_upgrade_version   57% 21 9 0   50% 8 2   55%
paperless/checks.py check_deprecated_db_settings   86% 7 1 0   75% 4 1   82%
paperless/checks.py check_deprecated_v2_ocr_env_vars   71% 7 2 0   50% 4 2   64%
paperless/checks.py get_tesseract_langs   100% 3 0 0   100% 0 0   100%
paperless/checks.py check_default_language_available   73% 11 3 0   62% 8 3   68%
paperless/checks.py (no function)   100% 37 0 0   100% 0 0   100%
paperless/config.py BaseConfig._get_config_instance   100% 5 0 0   100% 2 0   100%
paperless/config.py OutputTypeConfig.__post_init__   0% 2 2 0   100% 0 0   0%
paperless/config.py OcrConfig.__post_init__   0% 22 22 0   0% 4 0   0%
paperless/config.py BarcodeConfig.__post_init__   0% 14 14 0   100% 0 0   0%
paperless/config.py GeneralConfig.__post_init__   100% 3 0 0   100% 0 0   100%
paperless/config.py RemoteOCRConfig.__post_init__   100% 5 0 0   100% 0 0   100%
paperless/config.py RemoteOCRConfig.remote_ocr_by_default   0% 1 1 0   100% 0 0   0%
paperless/config.py AIConfig.__post_init__   100% 16 0 0   100% 0 0   100%
paperless/config.py AIConfig.llm_index_enabled   100% 1 0 0   100% 0 0   100%
paperless/config.py (no function)   100% 84 0 0   100% 0 0   100%
paperless/consumers.py StatusConsumer._authenticated   0% 2 2 0   100% 0 0   0%
paperless/consumers.py StatusConsumer._can_view   0% 9 9 0   0% 4 0   0%
paperless/consumers.py StatusConsumer.connect   0% 6 6 0   0% 2 0   0%
paperless/consumers.py StatusConsumer.disconnect   0% 2 2 0   100% 0 0   0%
paperless/consumers.py StatusConsumer._start_heartbeat   0% 1 1 0   100% 0 0   0%
paperless/consumers.py StatusConsumer._stop_heartbeat   0% 5 5 0   0% 2 0   0%
paperless/consumers.py StatusConsumer._heartbeat_loop   0% 3 3 0   100% 0 0   0%
paperless/consumers.py StatusConsumer.status_update   0% 4 4 0   0% 4 0   0%
paperless/consumers.py StatusConsumer.documents_deleted   0% 3 3 0   0% 2 0   0%
paperless/consumers.py StatusConsumer.document_updated   0% 4 4 0   0% 4 0   0%
paperless/consumers.py (no function)   78% 27 6 0   50% 2 1   76%
paperless/db_cache.py custom_get_query_cache_key   0% 1 1 0   100% 0 0   0%
paperless/db_cache.py custom_get_table_cache_key   0% 1 1 0   100% 0 0   0%
paperless/db_cache.py invalidate_db_cache   0% 1 1 0   100% 0 0   0%
paperless/db_cache.py (no function)   0% 7 7 0   100% 0 0   0%
paperless/filters.py (no function)   100% 12 0 0   100% 0 0   100%
paperless/logging.py ConsumeTaskFormatter.__init__   100% 1 0 0   100% 0 0   100%
paperless/logging.py ConsumeTaskFormatter.format   100% 3 0 0   100% 0 0   100%
paperless/logging.py (no function)   100% 7 0 0   100% 0 0   100%
paperless/middleware.py StreamAwareCompressionMiddleware.process_response   75% 4 1 0   50% 2 1   67%
paperless/middleware.py ApiVersionMiddleware.__init__   100% 1 0 0   100% 0 0   100%
paperless/middleware.py ApiVersionMiddleware.__call__   100% 6 0 0   100% 2 0   100%
paperless/middleware.py (no function)   100% 8 0 0   100% 0 0   100%
paperless/models.py AbstractSingletonModel.save   100% 2 0 0   100% 0 0   100%
paperless/models.py ApplicationConfiguration.__str__   0% 1 1 0   100% 0 0   0%
paperless/models.py (no function)   100% 101 0 0   100% 0 0   100%
paperless/network.py is_public_ip   0% 5 5 0   100% 0 0   0%
paperless/network.py resolve_hostname_ips   0% 8 8 0   0% 2 0   0%
paperless/network.py format_host_for_url   0% 7 7 0   0% 2 0   0%
paperless/network.py validate_outbound_http_url   25% 16 12 0   10% 10 1   19%
paperless/network.py _rewrite_request_to_pinned_ip   0% 25 25 0   0% 12 0   0%
paperless/network.py PinnedHostHTTPTransport.__init__   0% 2 2 0   100% 0 0   0%
paperless/network.py PinnedHostHTTPTransport.handle_request   0% 2 2 0   100% 0 0   0%
paperless/network.py PinnedHostAsyncHTTPTransport.__init__   0% 2 2 0   100% 0 0   0%
paperless/network.py PinnedHostAsyncHTTPTransport.handle_async_request   0% 2 2 0   100% 0 0   0%
paperless/network.py create_pinned_httpx_client   0% 2 2 0   100% 0 0   0%
paperless/network.py create_pinned_async_httpx_client   0% 2 2 0   100% 0 0   0%
paperless/network.py (no function)   100% 20 0 0   100% 0 0   100%
paperless/parsers/__init__.py ParserProtocol.supported_mime_types   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.score   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.can_produce_archive   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.requires_pdf_rendition   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.configure   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.parse   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.get_text   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.get_date   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.get_archive_path   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.get_thumbnail   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.get_page_count   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.extract_metadata   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.__enter__   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py ParserProtocol.__exit__   0% 1 1 0   100% 0 0   0%
paperless/parsers/__init__.py (no function)   94% 48 3 0   50% 2 1   92%
paperless/parsers/mail.py MailDocumentParser.supported_mime_types   100% 1 0 0   100% 0 0   100%
paperless/parsers/mail.py MailDocumentParser.score   0% 3 3 0   0% 2 0   0%
paperless/parsers/mail.py MailDocumentParser.can_produce_archive   0% 1 1 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.requires_pdf_rendition   0% 1 1 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.__init__   0% 6 6 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.__enter__   0% 1 1 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.__exit__   0% 2 2 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.configure   0% 1 1 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.parse   0% 12 12 0   0% 2 0   0%
paperless/parsers/mail.py MailDocumentParser.parse.strip_text   0% 3 3 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.parse.build_formatted_text   0% 18 18 0   0% 10 0   0%
paperless/parsers/mail.py MailDocumentParser.get_text   0% 1 1 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.get_date   0% 1 1 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.get_archive_path   0% 1 1 0   100% 0 0   0%
paperless/parsers/mail.py MailDocumentParser.get_thumbnail   0% 3 3 0   0% 2 0   0%
paperless/parsers/mail.py MailDocumentParser.get_page_count   0% 4 4 0   0% 2 0   0%
paperless/parsers/mail.py MailDocumentParser.extract_metadata   0% 18 18 0   0% 2 0   0%
paperless/parsers/mail.py MailDocumentParser._settings_to_gotenberg_pdfa   0% 8 8 0   0% 6 0   0%
paperless/parsers/mail.py MailDocumentParser.parse_file_to_message   0% 10 10 0   0% 4 0   0%
paperless/parsers/mail.py MailDocumentParser.tika_parse   0% 9 9 0   0% 2 0   0%
paperless/parsers/mail.py MailDocumentParser.generate_pdf   0% 27 27 0   0% 12 0   0%
paperless/parsers/mail.py MailDocumentParser.mail_to_html   0% 29 29 0   0% 14 0   0%
paperless/parsers/mail.py MailDocumentParser.mail_to_html.clean_html   0% 9 9 0   0% 4 0   0%
paperless/parsers/mail.py MailDocumentParser.generate_pdf_from_mail   0% 14 14 0   0% 2 0   0%
paperless/parsers/mail.py MailDocumentParser.generate_pdf_from_html   0% 28 28 0   0% 4 0   0%
paperless/parsers/mail.py MailDocumentParser.generate_pdf_from_html.clean_html_script   0% 5 5 0   100% 0 0   0%
paperless/parsers/mail.py (no function)   94% 70 4 0   50% 2 1   93%
paperless/parsers/registry.py get_parser_registry   100% 9 0 0   100% 4 0   100%
paperless/parsers/registry.py init_builtin_parsers   0% 5 5 0   0% 2 0   0%
paperless/parsers/registry.py reset_parser_registry   0% 2 2 0   100% 0 0   0%
paperless/parsers/registry.py ParserRegistry.__init__   100% 2 0 0   100% 0 0   100%
paperless/parsers/registry.py ParserRegistry.register_builtin   100% 1 0 0   100% 0 0   100%
paperless/parsers/registry.py ParserRegistry.register_defaults   100% 10 0 0   100% 0 0   100%
paperless/parsers/registry.py ParserRegistry.discover   15% 13 11 0   25% 4 1   18%
paperless/parsers/registry.py ParserRegistry.log_summary   0% 9 9 0   0% 6 0   0%
paperless/parsers/registry.py ParserRegistry.all_parsers   100% 1 0 0   100% 0 0   100%
paperless/parsers/registry.py ParserRegistry.get_parser_for_file   88% 16 2 0   75% 12 3   82%
paperless/parsers/registry.py (no function)   92% 24 2 0   50% 2 1   88%
paperless/parsers/remote.py RemoteEngineConfig.__init__   100% 3 0 0   100% 0 0   100%
paperless/parsers/remote.py RemoteEngineConfig.from_app_config   100% 3 0 0   100% 0 0   100%
paperless/parsers/remote.py RemoteEngineConfig.engine_is_valid   100% 1 0 0   100% 0 0   100%
paperless/parsers/remote.py RemoteDocumentParser.supported_mime_types   100% 1 0 0   100% 0 0   100%
paperless/parsers/remote.py RemoteDocumentParser.score   50% 6 3 0   25% 4 1   40%
paperless/parsers/remote.py RemoteDocumentParser.can_produce_archive   0% 1 1 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.requires_pdf_rendition   0% 1 1 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.__init__   0% 5 5 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.__enter__   0% 1 1 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.__exit__   0% 2 2 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.configure   0% 1 1 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.parse   0% 11 11 0   0% 6 0   0%
paperless/parsers/remote.py RemoteDocumentParser.get_text   0% 1 1 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.get_date   0% 1 1 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.get_archive_path   0% 1 1 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.get_thumbnail   0% 2 2 0   100% 0 0   0%
paperless/parsers/remote.py RemoteDocumentParser.get_page_count   0% 4 4 0   0% 2 0   0%
paperless/parsers/remote.py RemoteDocumentParser.extract_metadata   0% 4 4 0   0% 2 0   0%
paperless/parsers/remote.py RemoteDocumentParser._azure_ai_vision_parse   0% 32 32 0   0% 4 0   0%
paperless/parsers/remote.py RemoteDocumentParser._azure_ai_vision_parse._revalidate_request_host   0% 1 1 0   100% 0 0   0%
paperless/parsers/remote.py (no function)   90% 51 5 0   50% 2 1   89%
paperless/parsers/tesseract.py RasterisedDocumentParser.supported_mime_types   100% 1 0 0   100% 0 0   100%
paperless/parsers/tesseract.py RasterisedDocumentParser.score   67% 3 1 0   50% 2 1   60%
paperless/parsers/tesseract.py RasterisedDocumentParser.can_produce_archive   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.requires_pdf_rendition   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.__init__   0% 7 7 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.__enter__   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.__exit__   0% 2 2 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.configure   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.get_text   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.get_date   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.get_archive_path   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.get_thumbnail   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.get_page_count   0% 4 4 0   0% 2 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.extract_metadata   0% 4 4 0   0% 2 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.is_image   0% 1 1 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.has_alpha   0% 2 2 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.remove_alpha   0% 3 3 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.get_dpi   0% 7 7 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.calculate_a4_dpi   0% 9 9 0   100% 0 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.extract_text   0% 10 10 0   0% 6 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.construct_ocrmypdf_parameters   0% 54 54 0   0% 38 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser._convert_image_to_pdfa   0% 25 25 0   0% 2 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser._convert_pdf_to_pdfa   0% 12 12 0   0% 2 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser._handle_subprocess_output_error   0% 3 3 0   0% 2 0   0%
paperless/parsers/tesseract.py RasterisedDocumentParser.parse   0% 81 81 0   0% 24 0   0%
paperless/parsers/tesseract.py (no function)   95% 74 4 0   50% 2 1   93%
paperless/parsers/text.py TextDocumentParser.supported_mime_types   100% 1 0 0   100% 0 0   100%
paperless/parsers/text.py TextDocumentParser.score   67% 3 1 0   50% 2 1   60%
paperless/parsers/text.py TextDocumentParser.can_produce_archive   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.requires_pdf_rendition   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.__init__   0% 3 3 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.__enter__   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.__exit__   0% 2 2 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.configure   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.parse   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.get_text   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.get_date   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.get_archive_path   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.get_thumbnail   0% 13 13 0   0% 2 0   0%
paperless/parsers/text.py TextDocumentParser.get_page_count   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py TextDocumentParser.extract_metadata   0% 1 1 0   100% 0 0   0%
paperless/parsers/text.py (no function)   91% 44 4 0   50% 2 1   89%
paperless/parsers/tika.py TikaDocumentParser.supported_mime_types   100% 1 0 0   100% 0 0   100%
paperless/parsers/tika.py TikaDocumentParser.score   0% 5 5 0   0% 4 0   0%
paperless/parsers/tika.py TikaDocumentParser.can_produce_archive   0% 1 1 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.requires_pdf_rendition   0% 1 1 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.__init__   0% 8 8 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.__enter__   0% 3 3 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.__exit__   0% 3 3 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.configure   0% 1 1 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.parse   0% 17 17 0   0% 6 0   0%
paperless/parsers/tika.py TikaDocumentParser.get_text   0% 1 1 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.get_date   0% 1 1 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.get_archive_path   0% 1 1 0   100% 0 0   0%
paperless/parsers/tika.py TikaDocumentParser.get_thumbnail   0% 3 3 0   0% 2 0   0%
paperless/parsers/tika.py TikaDocumentParser.get_page_count   0% 4 4 0   0% 2 0   0%
paperless/parsers/tika.py TikaDocumentParser.extract_metadata   0% 8 8 0   0% 2 0   0%
paperless/parsers/tika.py TikaDocumentParser._convert_to_pdf   0% 21 21 0   0% 8 0   0%
paperless/parsers/tika.py (no function)   92% 51 4 0   50% 2 1   91%
paperless/parsers/utils.py is_tagged_pdf   0% 11 11 0   0% 2 0   0%
paperless/parsers/utils.py extract_pdf_text   0% 11 11 0   100% 0 0   0%
paperless/parsers/utils.py post_process_text   0% 7 7 0   0% 2 0   0%
paperless/parsers/utils.py is_born_digital_text   0% 3 3 0   0% 2 0   0%
paperless/parsers/utils.py pdf_born_digital_text   0% 2 2 0   100% 0 0   0%
paperless/parsers/utils.py read_file_handle_unicode_errors   0% 13 13 0   0% 4 0   0%
paperless/parsers/utils.py get_page_count_for_pdf   0% 8 8 0   100% 0 0   0%
paperless/parsers/utils.py extract_pdf_metadata   0% 31 31 0   0% 6 0   0%
paperless/parsers/utils.py (no function)   95% 20 1 0   50% 2 1   91%
paperless/serialisers.py PasswordValidationMixin._has_real_password   100% 1 0 0   100% 0 0   100%
paperless/serialisers.py PasswordValidationMixin.validate_password   100% 6 0 0   100% 2 0   100%
paperless/serialisers.py PaperlessAuthTokenSerializer.validate   9% 11 10 0   0% 6 0   6%
paperless/serialisers.py UserSerializer.get_is_mfa_enabled   100% 2 0 0   100% 0 0   100%
paperless/serialisers.py UserSerializer.get_inherited_permissions   100% 1 0 0   100% 0 0   100%
paperless/serialisers.py UserSerializer.update   67% 6 2 0   50% 2 1   62%
paperless/serialisers.py UserSerializer.create   88% 16 2 0   80% 10 2   85%
paperless/serialisers.py SocialAccountSerializer.get_name   0% 4 4 0   100% 0 0   0%
paperless/serialisers.py ProfileSerializer.get_is_mfa_enabled   100% 2 0 0   100% 0 0   100%
paperless/serialisers.py ProfileSerializer.get_has_usable_password   100% 1 0 0   100% 0 0   100%
paperless/serialisers.py ApplicationConfigurationSerializer.get_externally_configured_variables   100% 1 0 0   100% 0 0   100%
paperless/serialisers.py ApplicationConfigurationSerializer._require_json_object   100% 2 0 0   100% 2 0   100%
paperless/serialisers.py ApplicationConfigurationSerializer.validate_user_args   100% 2 0 0   100% 0 0   100%
paperless/serialisers.py ApplicationConfigurationSerializer.validate_barcode_tag_mapping   100% 4 0 0   100% 2 0   100%
paperless/serialisers.py ApplicationConfigurationSerializer.run_validation   100% 15 0 0   100% 16 0   100%
paperless/serialisers.py ApplicationConfigurationSerializer.update   67% 3 1 0   50% 2 1   60%
paperless/serialisers.py ApplicationConfigurationSerializer._sanitize_raster_image   0% 7 7 0   100% 0 0   0%
paperless/serialisers.py ApplicationConfigurationSerializer.validate_app_logo   25% 8 6 0   17% 6 1   21%
paperless/serialisers.py ApplicationConfigurationSerializer.validate_llm_endpoint   86% 7 1 0   100% 2 0   89%
paperless/serialisers.py ApplicationConfigurationSerializer.validate_remote_ocr_endpoint   86% 7 1 0   100% 2 0   89%
paperless/serialisers.py (no function)   100% 89 0 0   100% 0 0   100%
paperless/settings/__init__.py _parse_remote_user_settings   67% 9 3 0   50% 4 2   62%
paperless/settings/__init__.py _parse_paperless_url   100% 6 0 0   50% 2 1   88%
paperless/settings/__init__.py _get_allauth_trusted_proxy_count   75% 4 1 0   50% 2 1   67%
paperless/settings/__init__.py _parse_cachalot_settings   100% 5 0 0   100% 0 0   100%
paperless/settings/__init__.py _parse_caches   100% 1 0 0   100% 0 0   100%
paperless/settings/__init__.py default_threads_per_worker   60% 5 2 0   100% 0 0   60%
paperless/settings/__init__.py _get_llm_extra_params   62% 8 3 0   50% 2 1   60%
paperless/settings/__init__.py _get_classifier_language_setting   100% 1 0 0   100% 0 0   100%
paperless/settings/__init__.py _get_search_language_setting   71% 7 2 0   50% 2 1   67%
paperless/settings/__init__.py (no function)   94% 329 20 0   52% 42 20   89%
paperless/settings/custom.py parse_hosting_settings   100% 6 0 0   100% 0 0   100%
paperless/settings/custom.py parse_redis_url   27% 15 11 0   30% 10 3   28%
paperless/settings/custom.py parse_beat_schedule   93% 14 1 0   83% 6 1   90%
paperless/settings/custom.py parse_db_settings   46% 24 13 0   29% 14 4   39%
paperless/settings/custom.py parse_dateparser_languages   0% 6 6 0   0% 4 0   0%
paperless/settings/custom.py parse_ignore_dates   0% 7 7 0   0% 4 0   0%
paperless/settings/custom.py (no function)   100% 18 0 0   100% 0 0   100%
paperless/settings/parsers.py str_to_bool   83% 6 1 0   75% 4 1   80%
paperless/settings/parsers.py get_int_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_int_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_int_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_int_from_env   67% 3 1 0   50% 2 1   60%
paperless/settings/parsers.py parse_dict_from_str   21% 34 27 0   6% 18 1   15%
paperless/settings/parsers.py parse_dict_from_str._set_nested   0% 6 6 0   0% 4 0   0%
paperless/settings/parsers.py parse_dict_from_str._get_nested   0% 6 6 0   0% 4 0   0%
paperless/settings/parsers.py parse_dict_from_str._has_nested   0% 5 5 0   100% 0 0   0%
paperless/settings/parsers.py get_bool_from_env   100% 1 0 0   100% 0 0   100%
paperless/settings/parsers.py get_float_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_float_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_float_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_float_from_env   67% 3 1 0   50% 2 1   60%
paperless/settings/parsers.py get_path_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_path_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_path_from_env   100% 1 0 0   0% 2 2   33%
paperless/settings/parsers.py get_path_from_env   67% 3 1 0   50% 2 1   60%
paperless/settings/parsers.py get_list_from_env   46% 13 7 0   40% 10 2   43%
paperless/settings/parsers.py get_choice_from_env   100% 0 0 0   100% 0 0   100%
paperless/settings/parsers.py get_choice_from_env   100% 0 0 0   100% 0 0   100%
paperless/settings/parsers.py get_choice_from_env   100% 0 0 0   100% 0 0   100%
paperless/settings/parsers.py get_choice_from_env   83% 6 1 0   75% 4 1   80%
paperless/settings/parsers.py (no function)   100% 32 0 0   0% 6 6   84%
paperless/signals.py handle_failed_login   80% 10 2 0   50% 4 2   71%
paperless/signals.py handle_social_account_updated   0% 33 33 0   0% 22 0   0%
paperless/signals.py (no function)   100% 6 0 0   100% 0 0   100%
paperless/signed_pickle.py _get_signing_key   100% 1 0 0   100% 0 0   100%
paperless/signed_pickle.py signed_pickle_dumps   100% 3 0 0   100% 0 0   100%
paperless/signed_pickle.py signed_pickle_loads   0% 10 10 0   0% 4 0   0%
paperless/signed_pickle.py (no function)   100% 11 0 0   100% 0 0   100%
paperless/urls.py (no function)   100% 96 0 0   100% 0 0   100%
paperless/utils.py ocr_to_dateparser_languages   0% 27 27 0   0% 10 0   0%
paperless/utils.py (no function)   100% 5 0 0   100% 0 0   100%
paperless/validators.py reject_dangerous_svg   0% 38 38 0   0% 32 0   0%
paperless/validators.py validate_raster_image   0% 11 11 0   0% 4 0   0%
paperless/validators.py (no function)   100% 14 0 0   100% 0 0   100%
paperless/version.py (no function)   100% 4 0 0   100% 0 0   100%
paperless/views.py StandardPagination._get_api_version   100% 3 0 0   100% 0 0   100%
paperless/views.py StandardPagination._should_include_all   100% 1 0 0   100% 0 0   100%
paperless/views.py StandardPagination.get_paginated_response   80% 5 1 0   50% 2 1   71%
paperless/views.py StandardPagination.get_all_result_ids   0% 5 5 0   0% 2 0   0%
paperless/views.py StandardPagination.get_paginated_response_schema   80% 5 1 0   50% 2 1   71%
paperless/views.py FaviconView.get   0% 5 5 0   100% 0 0   0%
paperless/views.py UserViewSet._parse_requested_bool   100% 6 0 0   100% 2 0   100%
paperless/views.py UserViewSet.create   50% 8 4 0   17% 6 1   36%
paperless/views.py UserViewSet.update   70% 10 3 0   50% 6 3   62%
paperless/views.py UserViewSet.destroy   75% 4 1 0   50% 2 1   67%
paperless/views.py UserViewSet.deactivate_totp   67% 9 3 0   50% 4 2   62%
paperless/views.py ProfileView.get   100% 3 0 0   100% 0 0   100%
paperless/views.py ProfileView.patch   100% 11 0 0   100% 4 0   100%
paperless/views.py TOTPView.get   100% 6 0 0   100% 0 0   100%
paperless/views.py TOTPView.post   44% 9 5 0   25% 4 1   38%
paperless/views.py TOTPView.delete   67% 6 2 0   50% 2 1   62%
paperless/views.py GenerateAuthTokenView.post   0% 6 6 0   0% 2 0   0%
paperless/views.py ApplicationConfigurationViewSet.create   100% 1 0 0   100% 0 0   100%
paperless/views.py ApplicationConfigurationViewSet.perform_update   94% 18 1 0   50% 2 1   90%
paperless/views.py DisconnectSocialAccountView.post   62% 8 3 0   100% 0 0   62%
paperless/views.py SocialAccountProvidersView.get   83% 6 1 0   50% 2 1   75%
paperless/views.py (no function)   100% 124 0 0   100% 0 0   100%
paperless/wsgi.py (no function)   0% 8 8 0   100% 0 0   0%
paperless_ai/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
paperless_ai/ai_classifier.py _fulltext_similar_documents   0% 9 9 0   0% 2 0   0%
paperless_ai/ai_classifier.py get_language_name   0% 5 5 0   0% 4 0   0%
paperless_ai/ai_classifier.py get_llm_output_language   0% 4 4 0   0% 2 0   0%
paperless_ai/ai_classifier.py build_prompt_without_rag   0% 5 5 0   100% 0 0   0%
paperless_ai/ai_classifier.py build_prompt_with_rag   0% 3 3 0   100% 0 0   0%
paperless_ai/ai_classifier.py build_localization_prompt   0% 3 3 0   100% 0 0   0%
paperless_ai/ai_classifier.py get_taxonomy_context   0% 20 20 0   0% 4 0   0%
paperless_ai/ai_classifier.py parse_ai_response   0% 2 2 0   100% 0 0   0%
paperless_ai/ai_classifier.py parse_ai_response._choice   0% 2 2 0   100% 0 0   0%
paperless_ai/ai_classifier.py _candidate_id_allowlist   0% 1 1 0   100% 0 0   0%
paperless_ai/ai_classifier.py get_ai_document_classification   0% 13 13 0   0% 2 0   0%
paperless_ai/ai_classifier.py get_ai_document_classification._localized_choice   0% 1 1 0   100% 0 0   0%
paperless_ai/ai_classifier.py (no function)   100% 37 0 0   100% 0 0   100%
paperless_ai/base_model.py _truncate_to_field_limit   0% 2 2 0   100% 0 0   0%
paperless_ai/base_model.py DocumentClassifierSchema._truncate   0% 1 1 0   100% 0 0   0%
paperless_ai/base_model.py model_to_classification_suggestions   0% 3 3 0   100% 0 0   0%
paperless_ai/base_model.py model_to_classification_suggestions._choice   0% 9 9 0   0% 4 0   0%
paperless_ai/base_model.py classification_suggestions_to_model   0% 1 1 0   100% 0 0   0%
paperless_ai/base_model.py (no function)   100% 36 0 0   100% 0 0   100%
paperless_ai/chat.py _build_chat_prompt   0% 1 1 0   100% 0 0   0%
paperless_ai/chat.py _build_refine_prompt   0% 1 1 0   100% 0 0   0%
paperless_ai/chat.py _build_document_reference   0% 1 1 0   100% 0 0   0%
paperless_ai/chat.py _get_document_references   0% 24 24 0   0% 10 0   0%
paperless_ai/chat.py _format_chat_metadata_trailer   0% 1 1 0   100% 0 0   0%
paperless_ai/chat.py stream_chat_with_documents   0% 5 5 0   100% 0 0   0%
paperless_ai/chat.py _stream_chat_with_documents   0% 35 35 0   0% 10 0   0%
paperless_ai/chat.py (no function)   100% 29 0 0   100% 0 0   100%
paperless_ai/client.py AIClient.__init__   0% 2 2 0   100% 0 0   0%
paperless_ai/client.py AIClient.get_llm   0% 19 19 0   0% 6 0   0%
paperless_ai/client.py AIClient.run_llm_query   0% 17 17 0   0% 2 0   0%
paperless_ai/client.py AIClient._normalize_errors   0% 10 10 0   0% 4 0   0%
paperless_ai/client.py AIClient._is_provider_error   0% 7 7 0   0% 4 0   0%
paperless_ai/client.py AIClient._is_openai_timeout   0% 4 4 0   0% 2 0   0%
paperless_ai/client.py (no function)   94% 33 2 0   50% 2 1   91%
paperless_ai/db.py db_connection_released   0% 4 4 0   100% 0 0   0%
paperless_ai/db.py (no function)   100% 5 0 0   100% 0 0   100%
paperless_ai/embedding.py get_embedding_model   0% 25 25 0   0% 8 0   0%
paperless_ai/embedding.py get_configured_model_name   0% 2 2 0   100% 0 0   0%
paperless_ai/embedding.py _normalize_llm_index_text   0% 2 2 0   100% 0 0   0%
paperless_ai/embedding.py build_llm_index_text   0% 6 6 0   0% 2 0   0%
paperless_ai/embedding.py (no function)   95% 21 1 0   50% 2 1   91%
paperless_ai/exceptions.py (no function)   100% 3 0 0   100% 0 0   100%
paperless_ai/indexing.py queue_llm_index_update_if_needed   0% 8 8 0   0% 2 0   0%
paperless_ai/indexing.py get_vector_store   0% 3 3 0   100% 0 0   0%
paperless_ai/indexing.py _index_rwlock   0% 2 2 0   100% 0 0   0%
paperless_ai/indexing.py read_store   0% 5 5 0   100% 0 0   0%
paperless_ai/indexing.py _exclude_readers   0% 5 5 0   100% 0 0   0%
paperless_ai/indexing.py _with_exclusive_access   0% 6 6 0   100% 0 0   0%
paperless_ai/indexing.py write_store   0% 4 4 0   100% 0 0   0%
paperless_ai/indexing.py _check_and_run_migrations   0% 6 6 0   0% 4 0   0%
paperless_ai/indexing.py _safe_related_name   0% 5 5 0   100% 0 0   0%
paperless_ai/indexing.py build_document_node   0% 8 8 0   100% 0 0   0%
paperless_ai/indexing.py load_or_build_index   0% 5 5 0   100% 0 0   0%
paperless_ai/indexing.py llm_index_exists   0% 2 2 0   100% 0 0   0%
paperless_ai/indexing.py get_rag_chunk_size   0% 1 1 0   100% 0 0   0%
paperless_ai/indexing.py get_rag_chunk_overlap   0% 2 2 0   100% 0 0   0%
paperless_ai/indexing.py get_rag_prompt_helper   0% 6 6 0   0% 2 0   0%
paperless_ai/indexing.py _embed_nodes   0% 4 4 0   0% 2 0   0%
paperless_ai/indexing.py document_id_filters   0% 4 4 0   100% 0 0   0%
paperless_ai/indexing.py _exclude_document_id_filter   0% 4 4 0   100% 0 0   0%
paperless_ai/indexing.py exclude_document_ids_filter   0% 4 4 0   100% 0 0   0%
paperless_ai/indexing.py update_llm_index   0% 47 47 0   0% 20 0   0%
paperless_ai/indexing.py llm_index_add_or_update_document   0% 13 13 0   0% 6 0   0%
paperless_ai/indexing.py llm_index_migrate   0% 8 8 0   0% 6 0   0%
paperless_ai/indexing.py llm_index_compact   0% 2 2 0   100% 0 0   0%
paperless_ai/indexing.py llm_index_remove_document   0% 9 9 0   0% 4 0   0%
paperless_ai/indexing.py truncate_content   0% 11 11 0   0% 2 0   0%
paperless_ai/indexing.py truncate_embedding_query   0% 4 4 0   100% 0 0   0%
paperless_ai/indexing.py normalize_document_ids   0% 3 3 0   0% 2 0   0%
paperless_ai/indexing.py retrieve_similar_nodes   0% 33 33 0   0% 16 0   0%
paperless_ai/indexing.py (no function)   95% 65 3 0   50% 2 1   94%
paperless_ai/matching.py _resolve_visible_ids   0% 4 4 0   0% 2 0   0%
paperless_ai/matching.py resolve_tag_ids   0% 1 1 0   100% 0 0   0%
paperless_ai/matching.py resolve_correspondent_ids   0% 1 1 0   100% 0 0   0%
paperless_ai/matching.py resolve_document_type_ids   0% 1 1 0   100% 0 0   0%
paperless_ai/matching.py resolve_storage_path_ids   0% 1 1 0   100% 0 0   0%
paperless_ai/matching.py _match_by_name   0% 2 2 0   100% 0 0   0%
paperless_ai/matching.py match_tags_by_name   0% 1 1 0   100% 0 0   0%
paperless_ai/matching.py match_correspondents_by_name   0% 1 1 0   100% 0 0   0%
paperless_ai/matching.py match_document_types_by_name   0% 1 1 0   100% 0 0   0%
paperless_ai/matching.py match_storage_paths_by_name   0% 1 1 0   100% 0 0   0%
paperless_ai/matching.py _normalize   0% 4 4 0   100% 0 0   0%
paperless_ai/matching.py _match_names_to_queryset   0% 16 16 0   0% 8 0   0%
paperless_ai/matching.py extract_unmatched_names   0% 2 2 0   100% 0 0   0%
paperless_ai/matching.py (no function)   100% 29 0 0   100% 0 0   100%
paperless_ai/prompts/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
paperless_ai/prompts/context.py (no function)   100% 22 0 0   100% 0 0   100%
paperless_ai/prompts/render.py render_prompt   0% 2 2 0   100% 0 0   0%
paperless_ai/prompts/render.py (no function)   100% 17 0 0   100% 0 0   100%
paperless_ai/tables.py DocumentChunksTable.create   0% 2 2 0   100% 0 0   0%
paperless_ai/tables.py DocumentChunksTable.insert_many   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentChunksTable.chunk_ids_for_document   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentChunksTable.delete_for_document   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentChunksTable.delete_all   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentChunksTable.count   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentMetaTable.create   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentMetaTable.upsert_many   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentMetaTable.delete_for_document   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentMetaTable.delete_all   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py DocumentMetaTable.copy_all   0% 3 3 0   0% 2 0   0%
paperless_ai/tables.py DocumentMetaTable.all_modified_times   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.create   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable._get   0% 2 2 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable._set   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.get_dim   0% 2 2 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.set_dim   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.get_embed_model   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.set_embed_model   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.get_schema_version   0% 2 2 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.set_schema_version   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.get_total_inserts   0% 2 2 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.increment_total_inserts   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py IndexMetaTable.reset_total_inserts   0% 1 1 0   100% 0 0   0%
paperless_ai/tables.py (no function)   0% 56 56 0   100% 0 0   0%
paperless_ai/taxonomy.py empty_taxonomy_candidates   0% 1 1 0   100% 0 0   0%
paperless_ai/taxonomy.py _node_document_weights   0% 10 10 0   0% 4 0   0%
paperless_ai/taxonomy.py _visible_ranked_candidates   0% 7 7 0   0% 2 0   0%
paperless_ai/taxonomy.py build_taxonomy_candidates   0% 19 19 0   0% 12 0   0%
paperless_ai/taxonomy.py format_taxonomy_for_prompt   0% 2 2 0   100% 0 0   0%
paperless_ai/taxonomy.py (no function)   96% 28 1 0   50% 2 1   93%
paperless_ai/vector_store.py _pack   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py _unpack   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py _vec0_params   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py _build_where   0% 34 34 0   0% 20 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.__init__   0% 4 4 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._open_connection   0% 11 11 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.client   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.close   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.__enter__   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.__exit__   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._transaction   0% 7 7 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.table_exists   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.vector_dim   0% 3 3 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.drop_table   0% 4 4 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.stored_model_name   0% 3 3 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.config_mismatch   0% 4 4 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._create_vec_table   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._create_table   0% 5 5 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._ensure_table   0% 2 2 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._row   0% 3 3 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._index_chunks   0% 3 3 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._delete_chunks_by_document_id   0% 4 4 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._increment_total_inserts   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.add   0% 9 9 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.upsert_document   0% 14 14 0   0% 6 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.delete   0% 3 3 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._rows_to_nodes   0% 6 6 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.get_nodes   0% 9 9 0   0% 6 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.query   0% 15 15 0   0% 6 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.get_modified_times   0% 3 3 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._db_path   0% 1 1 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._rebuild_file   0% 11 11 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.compact   0% 16 16 0   0% 8 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._rebuild_into   0% 20 20 0   0% 8 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._swap_in_compact   0% 7 7 0   0% 4 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._stored_schema_version   0% 4 4 0   0% 2 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.has_pending_migration   0% 2 2 0   100% 0 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore.check_and_run_migrations   0% 11 11 0   0% 6 0   0%
paperless_ai/vector_store.py PaperlessSqliteVecVectorStore._run_structural_migration   0% 7 7 0   0% 2 0   0%
paperless_ai/vector_store.py (no function)   0% 93 93 0   100% 0 0   0%
paperless_mail/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
paperless_mail/admin.py (no function)   100% 39 0 0   100% 0 0   100%
paperless_mail/apps.py (no function)   100% 5 0 0   100% 0 0   100%
paperless_mail/filters.py (no function)   100% 6 0 0   100% 0 0   100%
paperless_mail/mail.py BaseMailAction.get_criteria   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py BaseMailAction.post_consume   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py DeleteMailAction.post_consume   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py MarkReadMailAction.get_criteria   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py MarkReadMailAction.post_consume   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py MoveMailAction.post_consume   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py FlagMailAction.get_criteria   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py FlagMailAction.post_consume   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py TagMailAction.__init__   0% 9 9 0   0% 4 0   0%
paperless_mail/mail.py TagMailAction.get_criteria   0% 7 7 0   0% 6 0   0%
paperless_mail/mail.py TagMailAction.post_consume   0% 9 9 0   0% 6 0   0%
paperless_mail/mail.py mailbox_login   0% 16 16 0   0% 4 0   0%
paperless_mail/mail.py apply_mail_action   0% 20 20 0   0% 2 0   0%
paperless_mail/mail.py error_callback   0% 3 3 0   100% 0 0   0%
paperless_mail/mail.py queue_consumption_tasks   0% 2 2 0   100% 0 0   0%
paperless_mail/mail.py get_rule_action   0% 11 11 0   0% 10 0   0%
paperless_mail/mail.py make_criterias   0% 18 18 0   0% 14 0   0%
paperless_mail/mail.py PinnedIMAP4.__init__   100% 3 0 0   100% 0 0   100%
paperless_mail/mail.py PinnedIMAP4._connect_pinned   0% 10 10 0   0% 4 0   0%
paperless_mail/mail.py PinnedIMAP4._create_socket   33% 6 4 0   25% 4 1   30%
paperless_mail/mail.py PinnedClientMixin.__init__   100% 2 0 0   100% 0 0   100%
paperless_mail/mail.py PinnedClientMixin._pinned_client   100% 1 0 0   100% 0 0   100%
paperless_mail/mail.py PinnedMailBox._get_mailbox_client   100% 1 0 0   100% 0 0   100%
paperless_mail/mail.py PinnedMailBoxUnencrypted._get_mailbox_client   100% 1 0 0   100% 0 0   100%
paperless_mail/mail.py PinnedMailBoxStartTls._get_mailbox_client   40% 5 3 0   50% 2 1   43%
paperless_mail/mail.py get_mailbox   50% 20 10 0   50% 14 3   50%
paperless_mail/mail.py MailAccountHandler.__init__   0% 4 4 0   100% 0 0   0%
paperless_mail/mail.py MailAccountHandler._init_preprocessors   0% 3 3 0   0% 2 0   0%
paperless_mail/mail.py MailAccountHandler._init_preprocessor   0% 6 6 0   0% 2 0   0%
paperless_mail/mail.py MailAccountHandler._correspondent_from_name   0% 5 5 0   100% 0 0   0%
paperless_mail/mail.py MailAccountHandler._get_title   0% 7 7 0   0% 6 0   0%
paperless_mail/mail.py MailAccountHandler._get_uid_validity   0% 9 9 0   0% 2 0   0%
paperless_mail/mail.py MailAccountHandler._get_correspondent   0% 13 13 0   0% 10 0   0%
paperless_mail/mail.py MailAccountHandler.handle_mail_account   0% 33 33 0   0% 10 0   0%
paperless_mail/mail.py MailAccountHandler._preprocess_message   0% 3 3 0   0% 2 0   0%
paperless_mail/mail.py MailAccountHandler._handle_mail_rule   0% 69 69 0   0% 26 0   0%
paperless_mail/mail.py MailAccountHandler._handle_message   0% 13 13 0   0% 6 0   0%
paperless_mail/mail.py MailAccountHandler._record_processed_without_consumption   0% 1 1 0   100% 0 0   0%
paperless_mail/mail.py MailAccountHandler.filename_inclusion_matches   0% 8 8 0   0% 6 0   0%
paperless_mail/mail.py MailAccountHandler.filename_exclusion_matches   0% 7 7 0   0% 6 0   0%
paperless_mail/mail.py MailAccountHandler._process_attachments   0% 34 34 0   0% 14 0   0%
paperless_mail/mail.py MailAccountHandler._process_eml   0% 20 20 0   0% 6 0   0%
paperless_mail/mail.py (no function)   100% 116 0 0   100% 0 0   100%
paperless_mail/management/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
paperless_mail/management/commands/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
paperless_mail/management/commands/mail_fetcher.py Command.handle   0% 1 1 0   100% 0 0   0%
paperless_mail/management/commands/mail_fetcher.py (no function)   0% 5 5 0   100% 0 0   0%
paperless_mail/models.py MailAccount.__str__   0% 1 1 0   100% 0 0   0%
paperless_mail/models.py MailRule.__str__   0% 1 1 0   100% 0 0   0%
paperless_mail/models.py (no function)   100% 96 0 0   100% 0 0   100%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.__init__   0% 3 3 0   100% 0 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.gmail_client   0% 3 3 0   0% 2 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.outlook_client   0% 3 3 0   0% 2 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.oauth_callback_url   0% 1 1 0   100% 0 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.oauth_redirect_url   0% 1 1 0   100% 0 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.get_gmail_authorization_url   0% 1 1 0   100% 0 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.get_outlook_authorization_url   0% 1 1 0   100% 0 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.get_gmail_access_token   0% 1 1 0   100% 0 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.get_outlook_access_token   0% 1 1 0   100% 0 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.refresh_account_oauth_token   0% 17 17 0   0% 6 0   0%
paperless_mail/oauth.py PaperlessMailOAuth2Manager.validate_state   0% 1 1 0   100% 0 0   0%
paperless_mail/oauth.py (no function)   100% 27 0 0   100% 0 0   100%
paperless_mail/preprocessor.py MailMessagePreprocessor.able_to_run   100% 0 0 0   100% 0 0   100%
paperless_mail/preprocessor.py MailMessagePreprocessor.run   100% 0 0 0   100% 0 0   100%
paperless_mail/preprocessor.py MailMessageDecryptor.__init__   0% 3 3 0   100% 0 0   0%
paperless_mail/preprocessor.py MailMessageDecryptor.able_to_run   0% 5 5 0   0% 4 0   0%
paperless_mail/preprocessor.py MailMessageDecryptor.run   0% 15 15 0   0% 6 0   0%
paperless_mail/preprocessor.py MailMessageDecryptor._to_email_message   0% 2 2 0   100% 0 0   0%
paperless_mail/preprocessor.py MailMessageDecryptor._build_decrypted_message   0% 5 5 0   0% 4 0   0%
paperless_mail/preprocessor.py (no function)   100% 27 0 0   100% 0 0   100%
paperless_mail/serialisers.py ObfuscatedPasswordField.to_representation   100% 1 0 0   100% 0 0   100%
paperless_mail/serialisers.py ObfuscatedPasswordField.to_internal_value   100% 1 0 0   100% 0 0   100%
paperless_mail/serialisers.py MailAccountSerializer.update   100% 4 0 0   100% 2 0   100%
paperless_mail/serialisers.py AccountField.get_queryset   67% 6 2 0   50% 4 2   60%
paperless_mail/serialisers.py MailRuleSerializer.update   100% 2 0 0   100% 0 0   100%
paperless_mail/serialisers.py MailRuleSerializer.create   80% 5 1 0   50% 2 1   71%
paperless_mail/serialisers.py MailRuleSerializer.validate   100% 5 0 0   100% 2 0   100%
paperless_mail/serialisers.py MailRuleSerializer.validate_account   67% 3 1 0   50% 2 1   60%
paperless_mail/serialisers.py MailRuleSerializer.validate_maximum_age   100% 3 0 0   100% 2 0   100%
paperless_mail/serialisers.py (no function)   100% 43 0 0   100% 0 0   100%
paperless_mail/tasks.py process_mail_accounts   0% 19 19 0   0% 8 0   0%
paperless_mail/tasks.py (no function)   100% 14 0 0   100% 0 0   100%
paperless_mail/views.py DeleteProcessedMailPermissions.has_permission   100% 1 0 0   100% 0 0   100%
paperless_mail/views.py MailAccountViewSet.get_permissions   100% 3 0 0   100% 2 0   100%
paperless_mail/views.py MailAccountViewSet.test   37% 35 22 0   25% 12 3   34%
paperless_mail/views.py MailAccountViewSet.process   100% 3 0 0   100% 0 0   100%
paperless_mail/views.py ProcessedMailViewSet.bulk_delete   88% 8 1 0   75% 4 1   83%
paperless_mail/views.py OauthCallbackView.get   22% 32 25 0   20% 10 2   21%
paperless_mail/views.py (no function)   100% 79 0 0   100% 0 0   100%
Total     47% 18742 9898 0   21% 5106 475   42%

No items found using the specified filter.