Coverage report: 81%

Files Functions Classes

coverage.py v7.15.0, created at 2026-07-20 10:15 +0000

File function   statements missing excluded   coverage
src/qdrant_loader/__init__.py __getattr__   26 0 0   100%
src/qdrant_loader/__init__.py (no function)   7 0 0   100%
src/qdrant_loader/cli/__init__.py __getattr__   13 0 0   100%
src/qdrant_loader/cli/__init__.py (no function)   2 0 0   100%
src/qdrant_loader/cli/__main__.py (no function)   4 4 0   0%
src/qdrant_loader/cli/async_utils.py cancel_all_tasks   5 5 0   0%
src/qdrant_loader/cli/async_utils.py (no function)   3 0 0   100%
src/qdrant_loader/cli/asyncio.py async_command   3 0 0   100%
src/qdrant_loader/cli/asyncio.py async_command.wrapper   11 0 0   100%
src/qdrant_loader/cli/asyncio.py (no function)   8 0 0   100%
src/qdrant_loader/cli/cli.py _get_version_str   2 0 0   100%
src/qdrant_loader/cli/cli.py _check_updates_helper   2 0 0   100%
src/qdrant_loader/cli/cli.py _setup_workspace_impl   2 0 0   100%
src/qdrant_loader/cli/cli.py _create_db_dir_helper   2 0 0   100%
src/qdrant_loader/cli/cli.py _commands_run_init   2 0 0   100%
src/qdrant_loader/cli/cli.py _get_version   4 0 0   100%
src/qdrant_loader/cli/cli.py _get_logger   4 0 0   100%
src/qdrant_loader/cli/cli.py _setup_logging   6 0 3   100%
src/qdrant_loader/cli/cli.py _check_for_updates   4 0 0   100%
src/qdrant_loader/cli/cli.py _setup_workspace   4 1 2   75%
src/qdrant_loader/cli/cli.py cli   1 0 0   100%
src/qdrant_loader/cli/cli.py _create_database_directory   11 1 0   91%
src/qdrant_loader/cli/cli.py _load_config   30 1 0   97%
src/qdrant_loader/cli/cli.py _check_settings   6 0 0   100%
src/qdrant_loader/cli/cli.py _load_config_with_workspace   2 2 0   0%
src/qdrant_loader/cli/cli.py _run_init   9 1 0   89%
src/qdrant_loader/cli/cli.py init   2 2 0   0%
src/qdrant_loader/cli/cli.py _cancel_all_tasks   2 2 0   0%
src/qdrant_loader/cli/cli.py ingest   2 2 0   0%
src/qdrant_loader/cli/cli.py _start_webhook_server   2 2 0   0%
src/qdrant_loader/cli/cli.py setup   2 2 0   0%
src/qdrant_loader/cli/cli.py config   12 6 0   50%
src/qdrant_loader/cli/cli.py _add_project_commands   2 0 0   100%
src/qdrant_loader/cli/cli.py (no function)   71 2 0   97%
src/qdrant_loader/cli/commands/__init__.py __getattr__   16 6 0   62%
src/qdrant_loader/cli/commands/__init__.py (no function)   2 0 0   100%
src/qdrant_loader/cli/commands/config.py run_show_config   38 21 0   45%
src/qdrant_loader/cli/commands/config.py run_show_config._redact_secrets   13 13 0   0%
src/qdrant_loader/cli/commands/config.py (no function)   6 0 0   100%
src/qdrant_loader/cli/commands/config_cmd.py run_config_command   16 16 0   0%
src/qdrant_loader/cli/commands/config_cmd.py (no function)   8 8 0   0%
src/qdrant_loader/cli/commands/ingest.py run_pipeline_ingestion   23 23 0   0%
src/qdrant_loader/cli/commands/ingest.py (no function)   6 0 0   100%
src/qdrant_loader/cli/commands/ingest_cmd.py run_ingest_command   81 29 0   64%
src/qdrant_loader/cli/commands/ingest_cmd.py run_ingest_command._do_run   1 0 0   100%
src/qdrant_loader/cli/commands/ingest_cmd.py run_ingest_command._handle_sigint   4 0 0   100%
src/qdrant_loader/cli/commands/ingest_cmd.py (no function)   18 0 0   100%
src/qdrant_loader/cli/commands/init.py run_init   9 1 0   89%
src/qdrant_loader/cli/commands/init.py (no function)   3 0 0   100%
src/qdrant_loader/cli/commands/init_cmd.py run_init_command   69 69 0   0%
src/qdrant_loader/cli/commands/init_cmd.py _create_database_directory   7 7 2   0%
src/qdrant_loader/cli/commands/init_cmd.py (no function)   15 15 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py _init_queue   21 21 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py _run_with_queue   8 8 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_cmd   0 0 0   100%
src/qdrant_loader/cli/commands/jobs_cmd.py _common_options   4 0 0   100%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_list   2 2 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_list._list   16 16 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_retry   2 2 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_retry._retry   4 4 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_trigger   2 2 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_trigger._trigger   4 4 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_cancel   2 2 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py jobs_cancel._cancel   4 4 0   0%
src/qdrant_loader/cli/commands/jobs_cmd.py (no function)   35 0 0   100%
src/qdrant_loader/cli/commands/project/__init__.py (no function)   4 0 0   100%
src/qdrant_loader/cli/commands/project/list_cmd.py run_project_list   17 0 0   100%
src/qdrant_loader/cli/commands/project/list_cmd.py run_project_list._gather   11 2 0   82%
src/qdrant_loader/cli/commands/project/list_cmd.py (no function)   5 0 0   100%
src/qdrant_loader/cli/commands/project/status_cmd.py run_project_status   44 9 0   80%
src/qdrant_loader/cli/commands/project/status_cmd.py run_project_status._get_document_count   4 0 0   100%
src/qdrant_loader/cli/commands/project/status_cmd.py run_project_status._get_latest_ingestion   4 0 0   100%
src/qdrant_loader/cli/commands/project/status_cmd.py (no function)   5 0 0   100%
src/qdrant_loader/cli/commands/project/validate_cmd.py run_project_validate   32 13 0   59%
src/qdrant_loader/cli/commands/project/validate_cmd.py run_project_validate._get_all_sources_from_config   8 1 0   88%
src/qdrant_loader/cli/commands/project/validate_cmd.py (no function)   4 0 0   100%
src/qdrant_loader/cli/commands/serve_cmd.py serve_cmd   1 1 0   0%
src/qdrant_loader/cli/commands/serve_cmd.py _serve_main   103 76 0   26%
src/qdrant_loader/cli/commands/serve_cmd.py _serve_main._handle_signal   2 2 0   0%
src/qdrant_loader/cli/commands/serve_cmd.py _serve_main.scheduler_task   2 2 0   0%
src/qdrant_loader/cli/commands/serve_cmd.py _serve_main.worker_pool_task   10 10 0   0%
src/qdrant_loader/cli/commands/serve_cmd.py (no function)   18 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _get_console   4 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py run_setup   13 2 0   85%
src/qdrant_loader/cli/commands/setup_cmd.py _resolve_workspace   19 3 0   84%
src/qdrant_loader/cli/commands/setup_cmd.py _select_setup_mode   13 13 0   0%
src/qdrant_loader/cli/commands/setup_cmd.py run_setup_default   15 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py run_setup_wizard   21 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py run_setup_advanced   51 4 0   92%
src/qdrant_loader/cli/commands/setup_cmd.py _show_file_preview   6 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _confirm_overwrite   10 2 0   80%
src/qdrant_loader/cli/commands/setup_cmd.py _select_source_type   7 7 0   0%
src/qdrant_loader/cli/commands/setup_cmd.py _collect_sources_loop   26 1 0   96%
src/qdrant_loader/cli/commands/setup_cmd.py _source_name_to_env_suffix   3 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _collect_source_config   7 1 0   86%
src/qdrant_loader/cli/commands/setup_cmd.py _collect_git_config   13 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _collect_confluence_config   10 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _collect_jira_config   10 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _collect_publicdocs_config   5 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _collect_localfile_config   11 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _escape_env_value   3 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _write_env_file   26 6 0   77%
src/qdrant_loader/cli/commands/setup_cmd.py _write_config_file_multi   7 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py _write_config_file_advanced   7 0 0   100%
src/qdrant_loader/cli/commands/setup_cmd.py (no function)   30 0 0   100%
src/qdrant_loader/cli/commands/webhook_cmd.py _setup_logging   6 6 0   0%
src/qdrant_loader/cli/commands/webhook_cmd.py run_webhook_command   21 21 0   0%
src/qdrant_loader/cli/commands/webhook_cmd.py (no function)   11 11 0   0%
src/qdrant_loader/cli/config_loader.py _get_logger   1 1 0   0%
src/qdrant_loader/cli/config_loader.py setup_workspace   8 1 2   88%
src/qdrant_loader/cli/config_loader.py load_config_with_workspace   14 7 0   50%
src/qdrant_loader/cli/config_loader.py create_database_directory   9 9 2   0%
src/qdrant_loader/cli/config_loader.py load_config   30 21 0   30%
src/qdrant_loader/cli/config_loader.py (no function)   12 0 0   100%
src/qdrant_loader/cli/logging_utils.py get_logger   4 4 0   0%
src/qdrant_loader/cli/logging_utils.py setup_logging   8 8 3   0%
src/qdrant_loader/cli/logging_utils.py check_for_updates   6 6 0   0%
src/qdrant_loader/cli/logging_utils.py _get_version   7 7 0   0%
src/qdrant_loader/cli/logging_utils.py (no function)   8 8 0   0%
src/qdrant_loader/cli/path_utils.py create_database_directory   18 4 0   78%
src/qdrant_loader/cli/path_utils.py (no function)   4 0 0   100%
src/qdrant_loader/cli/project_commands.py project_cli   1 0 0   100%
src/qdrant_loader/cli/project_commands.py _get_all_sources_from_config   7 0 0   100%
src/qdrant_loader/cli/project_commands.py _get_project_document_count   11 1 0   91%
src/qdrant_loader/cli/project_commands.py _get_project_latest_ingestion   11 1 0   91%
src/qdrant_loader/cli/project_commands.py list   18 1 0   94%
src/qdrant_loader/cli/project_commands.py status   18 5 0   72%
src/qdrant_loader/cli/project_commands.py validate   19 0 0   100%
src/qdrant_loader/cli/project_commands.py _setup_project_manager   16 0 0   100%
src/qdrant_loader/cli/project_commands.py _initialize_project_contexts_from_config   10 0 0   100%
src/qdrant_loader/cli/project_commands.py (no function)   51 0 0   100%
src/qdrant_loader/cli/update_check.py check_for_updates   16 8 0   50%
src/qdrant_loader/cli/update_check.py (no function)   2 0 0   100%
src/qdrant_loader/cli/version.py get_version_str   6 0 2   100%
src/qdrant_loader/cli/version.py (no function)   2 0 0   100%
src/qdrant_loader/config.py (no function)   30 0 0   100%
src/qdrant_loader/config/__init__.py _get_logger   1 0 0   100%
src/qdrant_loader/config/__init__.py _get_connector_configs   5 5 0   0%
src/qdrant_loader/config/__init__.py __getattr__   4 4 0   0%
src/qdrant_loader/config/__init__.py get_settings   3 1 0   67%
src/qdrant_loader/config/__init__.py get_global_config   1 1 0   0%
src/qdrant_loader/config/__init__.py initialize_config   8 0 0   100%
src/qdrant_loader/config/__init__.py initialize_config_with_workspace   14 4 0   71%
src/qdrant_loader/config/__init__.py Settings.validate_source_configs   8 2 0   75%
src/qdrant_loader/config/__init__.py Settings._auto_resolve_env_vars   22 2 0   91%
src/qdrant_loader/config/__init__.py Settings.qdrant_url   1 0 0   100%
src/qdrant_loader/config/__init__.py Settings.qdrant_api_key   1 0 0   100%
src/qdrant_loader/config/__init__.py Settings.qdrant_collection_name   1 0 0   100%
src/qdrant_loader/config/__init__.py Settings.openai_api_key   4 1 0   75%
src/qdrant_loader/config/__init__.py Settings.state_db_path   1 0 0   100%
src/qdrant_loader/config/__init__.py Settings.llm_settings   4 0 0   100%
src/qdrant_loader/config/__init__.py Settings._substitute_env_vars   22 2 0   91%
src/qdrant_loader/config/__init__.py Settings._validate_env_substitution   3 0 0   100%
src/qdrant_loader/config/__init__.py Settings._validate_env_substitution.check_value   12 3 0   75%
src/qdrant_loader/config/__init__.py Settings.from_yaml   30 4 0   87%
src/qdrant_loader/config/__init__.py Settings.to_dict   1 0 0   100%
src/qdrant_loader/config/__init__.py (no function)   55 0 0   100%
src/qdrant_loader/config/base.py ConfigProtocol.to_dict   0 0 1   100%
src/qdrant_loader/config/base.py SourceConfigProtocol.validate   0 0 1   100%
src/qdrant_loader/config/base.py BaseConfig.to_dict   1 0 0   100%
src/qdrant_loader/config/base.py BaseSourceConfig.validate   0 0 0   100%
src/qdrant_loader/config/base.py (no function)   11 0 4   100%
src/qdrant_loader/config/chunking.py ChunkingConfig.validate_chunk_overlap   4 0 0   100%
src/qdrant_loader/config/chunking.py ChunkingConfig.validate_enhanced_semantic_analysis_dependency   4 0 0   100%
src/qdrant_loader/config/chunking.py (no function)   61 0 0   100%
src/qdrant_loader/config/concurrency.py (no function)   8 0 0   100%
src/qdrant_loader/config/embedding.py (no function)   12 0 0   100%
src/qdrant_loader/config/error_formatter.py format_validation_errors   10 0 0   100%
src/qdrant_loader/config/error_formatter.py print_config_error   30 4 0   87%
src/qdrant_loader/config/error_formatter.py _suggest_fix   19 0 0   100%
src/qdrant_loader/config/error_formatter.py (no function)   10 0 0   100%
src/qdrant_loader/config/global_config.py GlobalConfig.__init__   4 0 0   100%
src/qdrant_loader/config/global_config.py GlobalConfig.to_dict   1 0 0   100%
src/qdrant_loader/config/global_config.py (no function)   30 0 0   100%
src/qdrant_loader/config/graph.py GraphConfig.store_kwargs   1 0 0   100%
src/qdrant_loader/config/graph.py GraphConfig.to_dict   1 0 0   100%
src/qdrant_loader/config/graph.py (no function)   15 0 0   100%
src/qdrant_loader/config/models.py ProjectContext.__post_init__   6 0 0   100%
src/qdrant_loader/config/models.py ProjectConfig.get_effective_collection_name   1 0 0   100%
src/qdrant_loader/config/models.py ProjectsConfig.get_project   1 0 0   100%
src/qdrant_loader/config/models.py ProjectsConfig.list_project_ids   1 0 0   100%
src/qdrant_loader/config/models.py ProjectsConfig.add_project   3 0 0   100%
src/qdrant_loader/config/models.py ProjectsConfig.to_dict   1 0 0   100%
src/qdrant_loader/config/models.py ParsedConfig.get_all_projects   1 0 0   100%
src/qdrant_loader/config/models.py ProjectStats.serialize_last_updated   1 0 0   100%
src/qdrant_loader/config/models.py ProjectInfo.serialize_last_updated   1 0 0   100%
src/qdrant_loader/config/models.py (no function)   54 0 0   100%
src/qdrant_loader/config/parser.py _get_logger   1 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser.__init__   1 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser.parse   8 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser._normalize_config   10 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser._parse_global_config   5 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser._parse_projects   7 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser._parse_project_config   10 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser._inject_source_metadata   15 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser._is_valid_project_id   2 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser._merge_configs   3 0 0   100%
src/qdrant_loader/config/parser.py MultiProjectConfigParser._deep_merge_dicts   6 0 0   100%
src/qdrant_loader/config/parser.py (no function)   21 0 0   100%
src/qdrant_loader/config/qdrant.py QdrantConfig.to_dict   1 0 0   100%
src/qdrant_loader/config/qdrant.py (no function)   7 0 0   100%
src/qdrant_loader/config/source_config.py (no function)   8 0 0   100%
src/qdrant_loader/config/sources.py _get_connector_config_classes   6 0 0   100%
src/qdrant_loader/config/sources.py SourcesConfig.__init__   6 1 0   83%
src/qdrant_loader/config/sources.py SourcesConfig._convert_source_configs   22 0 0   100%
src/qdrant_loader/config/sources.py SourcesConfig.get_source_config   2 0 0   100%
src/qdrant_loader/config/sources.py SourcesConfig.to_dict   1 0 0   100%
src/qdrant_loader/config/sources.py (no function)   16 0 2   100%
src/qdrant_loader/config/state.py DatabaseDirectoryError.__init__   2 0 0   100%
src/qdrant_loader/config/state.py StateManagementConfig.validate_database_path   24 11 0   54%
src/qdrant_loader/config/state.py StateManagementConfig.validate_database_url   3 1 0   67%
src/qdrant_loader/config/state.py StateManagementConfig.validate_table_prefix   5 2 0   60%
src/qdrant_loader/config/state.py StateManagementConfig.validate_connection_pool   9 4 0   56%
src/qdrant_loader/config/state.py StateManagementConfig.__init__   3 0 0   100%
src/qdrant_loader/config/state.py (no function)   31 0 0   100%
src/qdrant_loader/config/types.py (no function)   68 0 0   100%
src/qdrant_loader/config/validator.py _get_logger   1 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator.__init__   1 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator.validate_structure   14 1 0   93%
src/qdrant_loader/config/validator.py ConfigValidator._validate_projects_section   17 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator._validate_project_config   22 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator._validate_sources_section   13 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator._validate_global_section   11 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator._validate_project_id   10 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator._validate_source_name   7 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator._validate_source_config   4 0 0   100%
src/qdrant_loader/config/validator.py ConfigValidator._validate_collection_name   5 0 0   100%
src/qdrant_loader/config/validator.py (no function)   15 0 0   100%
src/qdrant_loader/config/workers.py parse_interval_seconds   43 8 0   81%
src/qdrant_loader/config/workers.py IncrementalPullScheduleConfig.validate_interval_seconds   1 0 0   100%
src/qdrant_loader/config/workers.py IncrementalPullScheduleConfig.validate_dedup_statuses   12 3 0   75%
src/qdrant_loader/config/workers.py IncrementalPullScheduleConfig.validate_payload_defaults   9 2 0   78%
src/qdrant_loader/config/workers.py IncrementalPullScheduleConfig.validate_payload_defaults._validate_json_like   12 0 0   100%
src/qdrant_loader/config/workers.py (no function)   32 0 0   100%
src/qdrant_loader/config/workspace.py _get_logger   1 0 0   100%
src/qdrant_loader/config/workspace.py WorkspaceConfig.__post_init__   10 0 0   100%
src/qdrant_loader/config/workspace.py setup_workspace   12 0 0   100%
src/qdrant_loader/config/workspace.py validate_workspace   6 0 0   100%
src/qdrant_loader/config/workspace.py create_workspace_structure   9 0 0   100%
src/qdrant_loader/config/workspace.py get_workspace_env_override   3 0 0   100%
src/qdrant_loader/config/workspace.py validate_workspace_flags   6 0 0   100%
src/qdrant_loader/config/workspace.py (no function)   19 0 0   100%
src/qdrant_loader/connectors/__init__.py (no function)   0 0 0   100%
src/qdrant_loader/connectors/attachments.py attachment_metadata_from_dict   18 18 0   0%
src/qdrant_loader/connectors/attachments.py (no function)   4 4 0   0%
src/qdrant_loader/connectors/base.py resolve_safe_path   6 0 0   100%
src/qdrant_loader/connectors/base.py BaseConnector.__init__   2 0 0   100%
src/qdrant_loader/connectors/base.py BaseConnector.__aenter__   2 0 0   100%
src/qdrant_loader/connectors/base.py BaseConnector.__aexit__   1 0 0   100%
src/qdrant_loader/connectors/base.py BaseConnector.set_file_conversion_config   1 0 0   100%
src/qdrant_loader/connectors/base.py BaseConnector.stream_documents   1 0 2   100%
src/qdrant_loader/connectors/base.py BaseConnector.get_documents   5 0 0   100%
src/qdrant_loader/connectors/base.py BaseConnector.fetch_by_id   1 1 0   0%
src/qdrant_loader/connectors/base.py BaseConnector.list_entity_ids   1 1 2   0%
src/qdrant_loader/connectors/base.py (no function)   18 0 0   100%
src/qdrant_loader/connectors/confluence/__init__.py (no function)   3 0 0   100%
src/qdrant_loader/connectors/confluence/auth.py setup_authentication   9 5 0   44%
src/qdrant_loader/connectors/confluence/auth.py auto_detect_deployment_type   11 11 0   0%
src/qdrant_loader/connectors/confluence/auth.py (no function)   6 0 0   100%
src/qdrant_loader/connectors/confluence/config.py ConfluenceSpaceConfig.validate_content_types   5 1 0   80%
src/qdrant_loader/connectors/confluence/config.py ConfluenceSpaceConfig.auto_detect_deployment_type   3 1 0   67%
src/qdrant_loader/connectors/confluence/config.py ConfluenceSpaceConfig.load_token_from_env   1 0 0   100%
src/qdrant_loader/connectors/confluence/config.py ConfluenceSpaceConfig.load_email_from_env   1 0 0   100%
src/qdrant_loader/connectors/confluence/config.py ConfluenceSpaceConfig.validate_auth_config   8 3 0   62%
src/qdrant_loader/connectors/confluence/config.py (no function)   32 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector.__init__   14 2 0   86%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector.set_file_conversion_config   9 9 0   0%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._setup_authentication   1 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._auto_detect_deployment_type   1 1 0   0%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector.__aenter__   3 3 0   0%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector.__aexit__   1 1 0   0%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._get_api_url   1 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._make_request   11 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._get_space_content_cloud   7 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._get_space_content_datacenter   8 8 0   0%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._get_space_content   3 1 0   67%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._get_content_attachments   23 23 0   0%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._process_attachments_for_document   13 11 0   15%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._should_process_content   11 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._extract_hierarchy_info   1 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._process_content   63 25 0   60%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._construct_page_url   12 1 0   92%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._construct_canonical_page_url   6 1 0   83%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._parse_timestamp   17 8 0   53%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._clean_html   5 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._stream_content_cloud   43 6 0   86%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._stream_content_datacenter   34 8 0   76%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector.stream_documents   9 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector.get_documents   1 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector.fetch_by_id   10 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._stream_content_ids_cloud   21 4 0   81%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector._stream_content_ids_datacenter   14 2 0   86%
src/qdrant_loader/connectors/confluence/connector.py ConfluenceConnector.list_entity_ids   5 0 0   100%
src/qdrant_loader/connectors/confluence/connector.py (no function)   52 0 0   100%
src/qdrant_loader/connectors/confluence/mappers.py extract_hierarchy_info   24 0 0   100%
src/qdrant_loader/connectors/confluence/mappers.py (no function)   3 0 0   100%
src/qdrant_loader/connectors/confluence/pagination.py _quote_cql_literal   2 0 0   100%
src/qdrant_loader/connectors/confluence/pagination.py _sanitize_space_key   3 1 0   67%
src/qdrant_loader/connectors/confluence/pagination.py _sanitize_content_types   6 1 0   83%
src/qdrant_loader/connectors/confluence/pagination.py build_cloud_search_params   9 1 0   89%
src/qdrant_loader/connectors/confluence/pagination.py build_dc_search_params   7 7 0   0%
src/qdrant_loader/connectors/confluence/pagination.py (no function)   11 0 0   100%
src/qdrant_loader/connectors/exceptions.py HTTPRequestError.__init__   4 0 0   100%
src/qdrant_loader/connectors/exceptions.py (no function)   5 0 0   100%
src/qdrant_loader/connectors/factory.py get_connector_instance   8 1 0   88%
src/qdrant_loader/connectors/factory.py (no function)   4 0 0   100%
src/qdrant_loader/connectors/git/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/connectors/git/adapter.py GitPythonAdapter.__init__   2 0 0   100%
src/qdrant_loader/connectors/git/adapter.py GitPythonAdapter.clone   22 1 0   95%
src/qdrant_loader/connectors/git/adapter.py GitPythonAdapter.get_file_content   7 0 0   100%
src/qdrant_loader/connectors/git/adapter.py GitPythonAdapter.get_last_commit_date   10 3 0   70%
src/qdrant_loader/connectors/git/adapter.py GitPythonAdapter.list_files   8 0 0   100%
src/qdrant_loader/connectors/git/adapter.py (no function)   12 0 0   100%
src/qdrant_loader/connectors/git/config.py GitRepoConfig.validate_url   3 1 0   67%
src/qdrant_loader/connectors/git/config.py GitRepoConfig.validate_file_types   3 1 0   67%
src/qdrant_loader/connectors/git/config.py (no function)   21 0 0   100%
src/qdrant_loader/connectors/git/connector.py GitConnector.__init__   16 2 0   88%
src/qdrant_loader/connectors/git/connector.py GitConnector.set_file_conversion_config   3 3 0   0%
src/qdrant_loader/connectors/git/connector.py GitConnector.__aenter__   34 7 0   79%
src/qdrant_loader/connectors/git/connector.py GitConnector.__enter__   26 8 0   69%
src/qdrant_loader/connectors/git/connector.py GitConnector.__aexit__   2 0 0   100%
src/qdrant_loader/connectors/git/connector.py GitConnector.__exit__   1 0 0   100%
src/qdrant_loader/connectors/git/connector.py GitConnector._cleanup   6 2 0   67%
src/qdrant_loader/connectors/git/connector.py GitConnector._process_file   40 20 0   50%
src/qdrant_loader/connectors/git/connector.py GitConnector.stream_documents   22 13 0   41%
src/qdrant_loader/connectors/git/connector.py GitConnector.get_documents   1 0 0   100%
src/qdrant_loader/connectors/git/connector.py GitConnector.fetch_by_id   12 3 0   75%
src/qdrant_loader/connectors/git/connector.py GitConnector.list_entity_ids   6 0 0   100%
src/qdrant_loader/connectors/git/connector.py GitConnector._ensure_initialized   3 2 0   33%
src/qdrant_loader/connectors/git/connector.py (no function)   29 0 0   100%
src/qdrant_loader/connectors/git/file_processor.py FileProcessor.__init__   4 0 0   100%
src/qdrant_loader/connectors/git/file_processor.py FileProcessor.should_process_file   100 23 0   77%
src/qdrant_loader/connectors/git/file_processor.py (no function)   8 0 3   100%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor.__init__   2 0 0   100%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor.extract_all_metadata   12 0 0   100%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._extract_file_metadata   15 2 0   87%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._extract_repo_metadata   45 11 0   76%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._extract_git_metadata   26 8 0   69%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._extract_structure_metadata   32 10 0   69%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._get_repo_description   58 16 0   72%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._detect_encoding   9 2 0   78%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._detect_language   3 3 0   0%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._has_code_blocks   1 0 0   100%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._has_images   1 0 0   100%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._has_links   1 0 0   100%
src/qdrant_loader/connectors/git/metadata_extractor.py GitMetadataExtractor._get_heading_levels   2 0 0   100%
src/qdrant_loader/connectors/git/metadata_extractor.py (no function)   23 0 0   100%
src/qdrant_loader/connectors/git/operations.py GitOperations.__init__   3 0 0   100%
src/qdrant_loader/connectors/git/operations.py GitOperations._to_git_path   1 0 0   100%
src/qdrant_loader/connectors/git/operations.py GitOperations.clone   42 1 0   98%
src/qdrant_loader/connectors/git/operations.py GitOperations.get_file_content   17 0 0   100%
src/qdrant_loader/connectors/git/operations.py GitOperations.get_last_commit_date   26 0 0   100%
src/qdrant_loader/connectors/git/operations.py GitOperations.get_first_commit_date   26 2 0   92%
src/qdrant_loader/connectors/git/operations.py GitOperations.list_files   9 0 0   100%
src/qdrant_loader/connectors/git/operations.py (no function)   17 0 0   100%
src/qdrant_loader/connectors/http.py (no function)   1 1 0   0%
src/qdrant_loader/connectors/jira/__init__.py (no function)   3 0 0   100%
src/qdrant_loader/connectors/jira/auth.py setup_authentication   9 3 0   67%
src/qdrant_loader/connectors/jira/auth.py auto_detect_deployment_type   11 3 0   73%
src/qdrant_loader/connectors/jira/auth.py (no function)   6 0 0   100%
src/qdrant_loader/connectors/jira/cloud_connector.py JiraCloudConnector._get_api_url   1 0 0   100%
src/qdrant_loader/connectors/jira/cloud_connector.py JiraCloudConnector.get_issues   42 4 0   90%
src/qdrant_loader/connectors/jira/cloud_connector.py (no function)   13 0 0   100%
src/qdrant_loader/connectors/jira/config.py JiraExtraField.normalize_strings   6 1 0   83%
src/qdrant_loader/connectors/jira/config.py JiraExtraField.validate_attr_requirement   6 0 0   100%
src/qdrant_loader/connectors/jira/config.py JiraExtraField.validate_reserved_name   3 0 0   100%
src/qdrant_loader/connectors/jira/config.py JiraProjectConfig.auto_detect_deployment_type   3 1 0   67%
src/qdrant_loader/connectors/jira/config.py JiraProjectConfig.load_token_from_env   1 0 0   100%
src/qdrant_loader/connectors/jira/config.py JiraProjectConfig.load_email_from_env   1 0 0   100%
src/qdrant_loader/connectors/jira/config.py JiraProjectConfig.validate_no_placeholders   11 0 0   100%
src/qdrant_loader/connectors/jira/config.py JiraProjectConfig.validate_auth_config   8 1 0   88%
src/qdrant_loader/connectors/jira/config.py JiraProjectConfig.validate_list_items   3 1 0   67%
src/qdrant_loader/connectors/jira/config.py JiraProjectConfig.validate_extra_fields_unique   9 0 0   100%
src/qdrant_loader/connectors/jira/config.py JiraProjectConfig.parse_updated_after   20 1 0   95%
src/qdrant_loader/connectors/jira/config.py (no function)   63 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.__init__   16 1 0   94%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._setup_authentication   1 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._auto_detect_deployment_type   1 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.set_file_conversion_config   30 30 0   0%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._validate_connection   30 9 0   70%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._escape_jql_literal   3 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._build_jql_filter   16 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.__aenter__   4 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.__aexit__   3 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._get_api_url   0 0 1   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._make_request   18 7 0   61%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.get_issues   0 0 1   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._parse_issue   1 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._parse_user   1 1 0   0%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._parse_attachment   1 1 0   0%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._parse_comment   1 1 0   0%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._get_issue_attachments   4 1 0   75%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.fetch_by_id   8 3 0   62%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.list_entity_ids   2 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._issues_to_documents   4 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector._stream_issues_to_documents   27 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.stream_documents   4 0 0   100%
src/qdrant_loader/connectors/jira/connector.py BaseJiraConnector.get_documents   5 0 0   100%
src/qdrant_loader/connectors/jira/connector.py (no function)   54 0 2   100%
src/qdrant_loader/connectors/jira/data_center_connector.py JiraDataCenterConnector._get_api_url   1 0 0   100%
src/qdrant_loader/connectors/jira/data_center_connector.py JiraDataCenterConnector.get_issues   44 7 0   84%
src/qdrant_loader/connectors/jira/data_center_connector.py (no function)   12 0 0   100%
src/qdrant_loader/connectors/jira/mappers.py parse_user   10 4 0   60%
src/qdrant_loader/connectors/jira/mappers.py parse_attachment   13 4 0   69%
src/qdrant_loader/connectors/jira/mappers.py parse_comment   11 3 0   73%
src/qdrant_loader/connectors/jira/mappers.py _extract_extra_field_value   12 1 0   92%
src/qdrant_loader/connectors/jira/mappers.py _parse_linked_issues   15 2 0   87%
src/qdrant_loader/connectors/jira/mappers.py parse_issue   63 11 0   83%
src/qdrant_loader/connectors/jira/mappers.py parse_issue._require_dict_with_key   3 1 0   67%
src/qdrant_loader/connectors/jira/mappers.py adf_to_oneline_fulltext   3 0 0   100%
src/qdrant_loader/connectors/jira/mappers.py adf_to_oneline_fulltext.extract_text   11 0 0   100%
src/qdrant_loader/connectors/jira/mappers.py (no function)   12 0 0   100%
src/qdrant_loader/connectors/jira/models.py (no function)   47 0 0   100%
src/qdrant_loader/connectors/localfile/__init__.py (no function)   3 0 0   100%
src/qdrant_loader/connectors/localfile/config.py LocalFileConfig.validate_base_url   3 0 0   100%
src/qdrant_loader/connectors/localfile/config.py (no function)   11 0 0   100%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector.__init__   15 0 0   100%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector._fix_windows_file_path   4 0 0   100%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector.set_file_conversion_config   3 0 0   100%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector._build_file_document   36 0 0   100%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector._is_within_base_path   3 0 0   100%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector.stream_documents   17 7 0   59%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector.get_documents   1 0 0   100%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector.fetch_by_id   11 3 0   73%
src/qdrant_loader/connectors/localfile/connector.py LocalFileConnector.list_entity_ids   8 1 0   88%
src/qdrant_loader/connectors/localfile/connector.py (no function)   23 0 0   100%
src/qdrant_loader/connectors/localfile/file_processor.py LocalFileFileProcessor.__init__   4 0 0   100%
src/qdrant_loader/connectors/localfile/file_processor.py LocalFileFileProcessor.should_process_file   87 6 0   93%
src/qdrant_loader/connectors/localfile/file_processor.py (no function)   8 0 2   100%
src/qdrant_loader/connectors/localfile/metadata_extractor.py LocalFileMetadataExtractor.__init__   2 0 0   100%
src/qdrant_loader/connectors/localfile/metadata_extractor.py LocalFileMetadataExtractor.extract_all_metadata   9 0 0   100%
src/qdrant_loader/connectors/localfile/metadata_extractor.py LocalFileMetadataExtractor._extract_file_metadata   8 0 0   100%
src/qdrant_loader/connectors/localfile/metadata_extractor.py LocalFileMetadataExtractor._extract_structure_metadata   5 0 0   100%
src/qdrant_loader/connectors/localfile/metadata_extractor.py LocalFileMetadataExtractor._detect_encoding   9 4 0   56%
src/qdrant_loader/connectors/localfile/metadata_extractor.py (no function)   11 0 0   100%
src/qdrant_loader/connectors/publicdocs/__init__.py (no function)   2 0 0   100%
src/qdrant_loader/connectors/publicdocs/config.py PublicDocsSourceConfig.validate_content_type   4 0 0   100%
src/qdrant_loader/connectors/publicdocs/config.py (no function)   18 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.__init__   14 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.__aenter__   9 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.__aexit__   4 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.client   3 1 0   67%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.set_file_conversion_config   6 6 0   0%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._should_process_url   23 2 0   91%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._build_page_document   1 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.stream_documents   47 15 0   68%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.get_documents   1 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.fetch_by_id   15 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector.list_entity_ids   3 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._process_page   35 6 0   83%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._extract_links   12 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._extract_content   30 0 0   100%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._extract_title   25 1 0   96%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._extract_attachments   22 12 0   45%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._get_mime_type_from_extension   2 2 0   0%
src/qdrant_loader/connectors/publicdocs/connector.py PublicDocsConnector._get_all_pages   23 16 0   30%
src/qdrant_loader/connectors/publicdocs/connector.py (no function)   43 0 0   100%
src/qdrant_loader/connectors/publicdocs/crawler.py discover_pages   78 17 3   78%
src/qdrant_loader/connectors/publicdocs/crawler.py (no function)   7 0 0   100%
src/qdrant_loader/connectors/publicdocs/http.py read_text_response   2 0 0   100%
src/qdrant_loader/connectors/publicdocs/http.py get_text   2 2 0   0%
src/qdrant_loader/connectors/publicdocs/http.py (no function)   3 0 0   100%
src/qdrant_loader/connectors/publicdocs/parsers.py extract_links   9 9 0   0%
src/qdrant_loader/connectors/publicdocs/parsers.py extract_title   13 13 0   0%
src/qdrant_loader/connectors/publicdocs/parsers.py extract_content   14 14 0   0%
src/qdrant_loader/connectors/publicdocs/parsers.py should_process_url   9 9 0   0%
src/qdrant_loader/connectors/publicdocs/parsers.py extract_attachments   30 30 0   0%
src/qdrant_loader/connectors/publicdocs/parsers.py get_mime_type_from_extension   2 2 0   0%
src/qdrant_loader/connectors/publicdocs/parsers.py (no function)   11 11 0   0%
src/qdrant_loader/connectors/registry.py (no function)   10 0 0   100%
src/qdrant_loader/connectors/shared/__init__.py (no function)   0 0 0   100%
src/qdrant_loader/connectors/shared/attachments/__init__.py (no function)   3 0 0   100%
src/qdrant_loader/connectors/shared/attachments/metadata.py normalize_attachment_metadata   10 2 0   80%
src/qdrant_loader/connectors/shared/attachments/metadata.py jira_attachment_to_metadata   3 0 0   100%
src/qdrant_loader/connectors/shared/attachments/metadata.py confluence_attachment_to_metadata   48 19 0   60%
src/qdrant_loader/connectors/shared/attachments/metadata.py (no function)   6 0 0   100%
src/qdrant_loader/connectors/shared/attachments/reader.py AttachmentReader.__init__   2 0 0   100%
src/qdrant_loader/connectors/shared/attachments/reader.py AttachmentReader.fetch_and_process   1 1 0   0%
src/qdrant_loader/connectors/shared/attachments/reader.py AttachmentReader.aclose   1 1 0   0%
src/qdrant_loader/connectors/shared/attachments/reader.py AttachmentReader.close   1 1 0   0%
src/qdrant_loader/connectors/shared/attachments/reader.py (no function)   9 0 0   100%
src/qdrant_loader/connectors/shared/http/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/connectors/shared/http/client.py make_request_async   2 0 0   100%
src/qdrant_loader/connectors/shared/http/client.py make_request_async._do_request   1 0 0   100%
src/qdrant_loader/connectors/shared/http/client.py make_request_with_retries_async   16 4 0   75%
src/qdrant_loader/connectors/shared/http/client.py aiohttp_request_with_retries   17 8 7   53%
src/qdrant_loader/connectors/shared/http/client.py (no function)   10 0 2   100%
src/qdrant_loader/connectors/shared/http/errors.py HTTPRequestError.__init__   4 4 0   0%
src/qdrant_loader/connectors/shared/http/errors.py HTTPRequestError.__str__   0 0 2   100%
src/qdrant_loader/connectors/shared/http/errors.py (no function)   2 0 1   100%
src/qdrant_loader/connectors/shared/http/policy.py request_with_policy   9 4 0   56%
src/qdrant_loader/connectors/shared/http/policy.py request_with_policy._do_call   1 0 0   100%
src/qdrant_loader/connectors/shared/http/policy.py aiohttp_request_with_policy   9 4 0   56%
src/qdrant_loader/connectors/shared/http/policy.py aiohttp_request_with_policy._do_call   1 0 0   100%
src/qdrant_loader/connectors/shared/http/policy.py (no function)   9 0 0   100%
src/qdrant_loader/connectors/shared/http/rate_limit.py RateLimiter.__init__   7 2 0   71%
src/qdrant_loader/connectors/shared/http/rate_limit.py RateLimiter.per_minute   1 0 0   100%
src/qdrant_loader/connectors/shared/http/rate_limit.py RateLimiter._get_delay   5 0 0   100%
src/qdrant_loader/connectors/shared/http/rate_limit.py RateLimiter.acquire   8 0 0   100%
src/qdrant_loader/connectors/shared/http/rate_limit.py RateLimiter.__aenter__   2 0 0   100%
src/qdrant_loader/connectors/shared/http/rate_limit.py RateLimiter.__aexit__   1 0 0   100%
src/qdrant_loader/connectors/shared/http/rate_limit.py (no function)   10 0 0   100%
src/qdrant_loader/core/__init__.py (no function)   2 0 0   100%
src/qdrant_loader/core/async_ingestion_pipeline.py AsyncIngestionPipeline.__init__   25 1 0   96%
src/qdrant_loader/core/async_ingestion_pipeline.py AsyncIngestionPipeline.initialize   22 10 0   55%
src/qdrant_loader/core/async_ingestion_pipeline.py AsyncIngestionPipeline.process_documents   21 0 0   100%
src/qdrant_loader/core/async_ingestion_pipeline.py AsyncIngestionPipeline.cleanup   16 1 0   94%
src/qdrant_loader/core/async_ingestion_pipeline.py AsyncIngestionPipeline.__del__   4 0 0   100%
src/qdrant_loader/core/async_ingestion_pipeline.py AsyncIngestionPipeline._sync_cleanup   19 0 0   100%
src/qdrant_loader/core/async_ingestion_pipeline.py (no function)   19 0 0   100%
src/qdrant_loader/core/attachment_downloader.py AttachmentMetadata.__init__   9 0 0   100%
src/qdrant_loader/core/attachment_downloader.py AttachmentDownloader.__init__   11 0 0   100%
src/qdrant_loader/core/attachment_downloader.py AttachmentDownloader.should_download_attachment   13 6 0   54%
src/qdrant_loader/core/attachment_downloader.py AttachmentDownloader.download_attachment   49 11 0   78%
src/qdrant_loader/core/attachment_downloader.py AttachmentDownloader.process_attachment   32 3 0   91%
src/qdrant_loader/core/attachment_downloader.py AttachmentDownloader.cleanup_temp_file   6 2 0   67%
src/qdrant_loader/core/attachment_downloader.py AttachmentDownloader.download_and_process_attachments   15 0 0   100%
src/qdrant_loader/core/attachment_downloader.py (no function)   18 0 0   100%
src/qdrant_loader/core/chunking/__init__.py (no function)   2 0 0   100%
src/qdrant_loader/core/chunking/chunking_service.py ChunkingService.__new__   3 0 0   100%
src/qdrant_loader/core/chunking/chunking_service.py ChunkingService.__init__   9 0 0   100%
src/qdrant_loader/core/chunking/chunking_service.py ChunkingService.validate_config   6 0 0   100%
src/qdrant_loader/core/chunking/chunking_service.py ChunkingService._get_strategy   18 0 0   100%
src/qdrant_loader/core/chunking/chunking_service.py ChunkingService.chunk_document   20 0 0   100%
src/qdrant_loader/core/chunking/chunking_service.py (no function)   13 0 0   100%
src/qdrant_loader/core/chunking/docling/__init__.py (no function)   8 0 0   100%
src/qdrant_loader/core/chunking/docling/chunker.py DocumentChunker.chunk   0 0 1   100%
src/qdrant_loader/core/chunking/docling/chunker.py build_chunker   7 0 0   100%
src/qdrant_loader/core/chunking/docling/chunker.py _build_chunker   5 1 0   80%
src/qdrant_loader/core/chunking/docling/chunker.py (no function)   12 0 7   100%
src/qdrant_loader/core/chunking/docling/config.py ChunkingConfig.from_embedding   2 0 0   100%
src/qdrant_loader/core/chunking/docling/config.py ChunkingConfig._resolve_tokenizer   5 1 0   80%
src/qdrant_loader/core/chunking/docling/config.py (no function)   30 0 0   100%
src/qdrant_loader/core/chunking/docling/docling_chunker.py DoclingChunker.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/docling/docling_chunker.py DoclingChunker._chunker   2 0 0   100%
src/qdrant_loader/core/chunking/docling/docling_chunker.py DoclingChunker.warm_up   1 0 0   100%
src/qdrant_loader/core/chunking/docling/docling_chunker.py DoclingChunker._serializer_provider   7 4 0   43%
src/qdrant_loader/core/chunking/docling/docling_chunker.py DoclingChunker._serializer_provider._MarkdownTableProvider.get_serializer   1 1 0   0%
src/qdrant_loader/core/chunking/docling/docling_chunker.py DoclingChunker.chunk   9 0 0   100%
src/qdrant_loader/core/chunking/docling/docling_chunker.py DoclingChunker._warn_if_over_budget   3 0 0   100%
src/qdrant_loader/core/chunking/docling/docling_chunker.py DoclingChunker._to_chunk   2 0 0   100%
src/qdrant_loader/core/chunking/docling/docling_chunker.py (no function)   19 0 3   100%
src/qdrant_loader/core/chunking/docling/exceptions.py TokenizerUnavailableError.__init__   3 3 0   0%
src/qdrant_loader/core/chunking/docling/exceptions.py (no function)   5 0 0   100%
src/qdrant_loader/core/chunking/docling/mapper.py ChunkDocumentMapper.__init__   1 0 0   100%
src/qdrant_loader/core/chunking/docling/mapper.py ChunkDocumentMapper.to_documents   2 0 0   100%
src/qdrant_loader/core/chunking/docling/mapper.py ChunkDocumentMapper._to_document   5 0 0   100%
src/qdrant_loader/core/chunking/docling/mapper.py ChunkDocumentMapper._structure_block   1 0 0   100%
src/qdrant_loader/core/chunking/docling/mapper.py (no function)   11 0 3   100%
src/qdrant_loader/core/chunking/docling/outcome.py (no function)   9 0 0   100%
src/qdrant_loader/core/chunking/docling/structure.py StructureProjector.project   6 0 0   100%
src/qdrant_loader/core/chunking/docling/structure.py StructureProjector._to_box   1 0 0   100%
src/qdrant_loader/core/chunking/docling/structure.py StructureProjector._cover_spans   3 0 0   100%
src/qdrant_loader/core/chunking/docling/structure.py (no function)   29 0 3   100%
src/qdrant_loader/core/chunking/docling/tokenizer.py TokenizerFactory.__init__   1 0 0   100%
src/qdrant_loader/core/chunking/docling/tokenizer.py TokenizerFactory.build   8 4 0   50%
src/qdrant_loader/core/chunking/docling/tokenizer.py TokenizerFactory._build_openai   7 2 0   71%
src/qdrant_loader/core/chunking/docling/tokenizer.py TokenizerFactory._build_huggingface   5 5 0   0%
src/qdrant_loader/core/chunking/docling/tokenizer.py (no function)   11 0 2   100%
src/qdrant_loader/core/chunking/progress_tracker.py ChunkingProgressTracker.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/progress_tracker.py ChunkingProgressTracker.start_chunking   4 1 0   75%
src/qdrant_loader/core/chunking/progress_tracker.py ChunkingProgressTracker.update_progress   2 0 0   100%
src/qdrant_loader/core/chunking/progress_tracker.py ChunkingProgressTracker.finish_chunking   8 2 0   75%
src/qdrant_loader/core/chunking/progress_tracker.py ChunkingProgressTracker.log_error   5 1 0   80%
src/qdrant_loader/core/chunking/progress_tracker.py ChunkingProgressTracker.log_fallback   5 1 0   80%
src/qdrant_loader/core/chunking/progress_tracker.py (no function)   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/__init__.py (no function)   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.create_chunk_document   1 1 0   0%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.estimate_chunk_count   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.generate_chunk_id   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.create_base_chunk_metadata   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.validate_chunk_content   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.should_skip_semantic_analysis   9 1 0   89%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor._get_current_timestamp   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor._get_strategy_name   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.calculate_content_similarity   11 1 0   91%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.optimize_chunk_boundaries   17 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.shutdown   8 7 0   12%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py BaseChunkProcessor.__del__   4 2 0   50%
src/qdrant_loader/core/chunking/strategy/base/chunk_processor.py (no function)   17 0 3   100%
src/qdrant_loader/core/chunking/strategy/base/document_parser.py BaseDocumentParser.parse_document_structure   1 1 0   0%
src/qdrant_loader/core/chunking/strategy/base/document_parser.py BaseDocumentParser.extract_section_metadata   1 1 0   0%
src/qdrant_loader/core/chunking/strategy/base/document_parser.py BaseDocumentParser.extract_section_title   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/document_parser.py BaseDocumentParser.analyze_content_characteristics   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/document_parser.py (no function)   9 0 2   100%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py BaseMetadataExtractor.extract_hierarchical_metadata   1 1 0   0%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py BaseMetadataExtractor.extract_entities   1 1 0   0%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py BaseMetadataExtractor.extract_cross_references   15 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py BaseMetadataExtractor.analyze_content_type   16 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py BaseMetadataExtractor._detect_primary_language   9 1 0   89%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py BaseMetadataExtractor._categorize_content   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py BaseMetadataExtractor.extract_keyword_density   13 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py BaseMetadataExtractor.create_breadcrumb_metadata   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/metadata_extractor.py (no function)   14 0 2   100%
src/qdrant_loader/core/chunking/strategy/base/section_splitter.py BaseSectionSplitter.__init__   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/section_splitter.py BaseSectionSplitter.split_sections   1 1 0   0%
src/qdrant_loader/core/chunking/strategy/base/section_splitter.py BaseSectionSplitter.validate_section_size   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/section_splitter.py BaseSectionSplitter.calculate_split_points   21 4 0   81%
src/qdrant_loader/core/chunking/strategy/base/section_splitter.py BaseSectionSplitter._find_natural_boundary   15 1 0   93%
src/qdrant_loader/core/chunking/strategy/base/section_splitter.py BaseSectionSplitter.create_section_metadata   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/section_splitter.py BaseSectionSplitter.split_content_by_size   17 0 0   100%
src/qdrant_loader/core/chunking/strategy/base/section_splitter.py (no function)   11 0 3   100%
src/qdrant_loader/core/chunking/strategy/base_strategy.py BaseChunkingStrategy.__init__   16 0 0   100%
src/qdrant_loader/core/chunking/strategy/base_strategy.py BaseChunkingStrategy._count_tokens   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/base_strategy.py BaseChunkingStrategy._process_text   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/base_strategy.py BaseChunkingStrategy._should_apply_nlp   26 0 0   100%
src/qdrant_loader/core/chunking/strategy/base_strategy.py BaseChunkingStrategy._extract_nlp_worthy_content   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/base_strategy.py BaseChunkingStrategy._extract_comments_and_docstrings   62 5 0   92%
src/qdrant_loader/core/chunking/strategy/base_strategy.py BaseChunkingStrategy._create_chunk_document   32 0 0   100%
src/qdrant_loader/core/chunking/strategy/base_strategy.py BaseChunkingStrategy.chunk_document   1 1 0   0%
src/qdrant_loader/core/chunking/strategy/base_strategy.py (no function)   18 0 2   100%
src/qdrant_loader/core/chunking/strategy/code/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor.__init__   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor.create_chunk_document   9 1 0   89%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor.should_skip_semantic_analysis   16 7 0   56%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._create_code_specific_metadata   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._generate_chunk_title   8 2 0   75%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._is_minified_code   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._is_generated_code   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._is_mostly_comments   5 1 0   80%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._has_meaningful_names   2 2 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._determine_learning_level   6 6 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._identify_programming_concepts   6 6 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py CodeChunkProcessor._extract_element_context   8 8 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_chunk_processor.py (no function)   20 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_document_parser.py CodeDocumentParser.__init__   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_document_parser.py CodeDocumentParser.parse_document_structure   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_document_parser.py CodeDocumentParser.extract_section_metadata   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_document_parser.py CodeDocumentParser.detect_language   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_document_parser.py CodeDocumentParser.parse_code_elements   11 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_document_parser.py CodeDocumentParser._get_tree_sitter_parser   11 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_document_parser.py CodeDocumentParser._parse_with_tree_sitter   11 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_document_parser.py (no function)   25 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor.extract_hierarchical_metadata   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor.extract_entities   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._build_dependency_graph   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._is_third_party_import   2 2 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._calculate_complexity_metrics   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._calculate_maintainability_index   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._identify_code_patterns   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._calculate_doc_coverage   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._identify_test_code   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._analyze_security_patterns   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._analyze_performance_patterns   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._calculate_maintainability_metrics   2 2 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._extract_language_specific_metadata   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._extract_python_metadata   19 19 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._extract_javascript_metadata   18 18 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._extract_java_metadata   14 14 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._extract_c_cpp_metadata   14 14 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py CodeMetadataExtractor._detect_python_version_features   2 2 0   0%
src/qdrant_loader/core/chunking/strategy/code/code_metadata_extractor.py (no function)   25 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_section_splitter.py CodeSectionSplitter.__init__   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_section_splitter.py CodeSectionSplitter.split_sections   24 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/code_section_splitter.py CodeSectionSplitter._merge_small_elements   25 5 0   80%
src/qdrant_loader/core/chunking/strategy/code/code_section_splitter.py CodeSectionSplitter._create_merged_element   19 16 0   16%
src/qdrant_loader/core/chunking/strategy/code/code_section_splitter.py CodeSectionSplitter._fallback_text_split   27 1 0   96%
src/qdrant_loader/core/chunking/strategy/code/code_section_splitter.py (no function)   13 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/__init__.py (no function)   11 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/complexity.py calculate_complexity_metrics   16 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/complexity.py calculate_maintainability_index   19 2 0   89%
src/qdrant_loader/core/chunking/strategy/code/metadata/complexity.py (no function)   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/dependencies.py build_dependency_graph   14 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/dependencies.py is_third_party_import   11 2 0   82%
src/qdrant_loader/core/chunking/strategy/code/metadata/dependencies.py (no function)   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/documentation.py calculate_doc_coverage   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/documentation.py (no function)   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/entities.py extract_entities   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/entities.py (no function)   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/language_specific.py extract_language_specific_metadata   9 2 0   78%
src/qdrant_loader/core/chunking/strategy/code/metadata/language_specific.py extract_python_metadata   18 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/language_specific.py extract_javascript_metadata   18 1 0   94%
src/qdrant_loader/core/chunking/strategy/code/metadata/language_specific.py extract_java_metadata   14 14 0   0%
src/qdrant_loader/core/chunking/strategy/code/metadata/language_specific.py extract_c_cpp_metadata   14 14 0   0%
src/qdrant_loader/core/chunking/strategy/code/metadata/language_specific.py detect_python_version_features   12 3 0   75%
src/qdrant_loader/core/chunking/strategy/code/metadata/language_specific.py (no function)   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/maintainability.py calculate_maintainability_metrics   16 3 0   81%
src/qdrant_loader/core/chunking/strategy/code/metadata/maintainability.py (no function)   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/patterns.py identify_code_patterns   25 2 0   92%
src/qdrant_loader/core/chunking/strategy/code/metadata/patterns.py (no function)   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/performance.py analyze_performance_patterns   38 4 0   89%
src/qdrant_loader/core/chunking/strategy/code/metadata/performance.py (no function)   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/security.py analyze_security_patterns   21 2 0   90%
src/qdrant_loader/core/chunking/strategy/code/metadata/security.py (no function)   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/metadata/testing.py identify_test_code   17 2 0   88%
src/qdrant_loader/core/chunking/strategy/code/metadata/testing.py (no function)   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/parser/__init__.py (no function)   0 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/parser/common.py CodeElement.add_child   2 2 0   0%
src/qdrant_loader/core/chunking/strategy/code/parser/common.py (no function)   41 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/parser/python_ast.py parse_python_ast   25 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/parser/python_ast.py parse_python_ast.add_element   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/parser/python_ast.py parse_python_ast.flush_module_group   14 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/parser/python_ast.py (no function)   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/parser/tree_sitter.py extract_tree_sitter_elements   4 4 0   0%
src/qdrant_loader/core/chunking/strategy/code/parser/tree_sitter.py extract_tree_sitter_elements._walk   20 20 0   0%
src/qdrant_loader/core/chunking/strategy/code/parser/tree_sitter.py (no function)   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/__init__.py (no function)   0 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/analysis.py analyze_code_content   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/analysis.py _check_indentation_consistency   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/analysis.py extract_language_context   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/analysis.py _identify_programming_paradigm   5 2 0   60%
src/qdrant_loader/core/chunking/strategy/code/processor/analysis.py _identify_frameworks   6 2 0   67%
src/qdrant_loader/core/chunking/strategy/code/processor/analysis.py _identify_language_version   5 2 0   60%
src/qdrant_loader/core/chunking/strategy/code/processor/analysis.py _analyze_style_conventions   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/analysis.py (no function)   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/quality.py assess_code_quality   16 3 0   81%
src/qdrant_loader/core/chunking/strategy/code/processor/quality.py assess_educational_value   14 4 0   71%
src/qdrant_loader/core/chunking/strategy/code/processor/quality.py calculate_reusability_score   17 4 0   76%
src/qdrant_loader/core/chunking/strategy/code/processor/quality.py (no function)   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/utils.py is_minified_code   8 1 0   88%
src/qdrant_loader/core/chunking/strategy/code/processor/utils.py is_generated_code   3 3 0   0%
src/qdrant_loader/core/chunking/strategy/code/processor/utils.py is_mostly_comments   5 5 0   0%
src/qdrant_loader/core/chunking/strategy/code/processor/utils.py has_meaningful_names   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/utils.py determine_learning_level   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/code/processor/utils.py identify_programming_concepts   6 1 0   83%
src/qdrant_loader/core/chunking/strategy/code/processor/utils.py extract_element_context   8 8 0   0%
src/qdrant_loader/core/chunking/strategy/code/processor/utils.py (no function)   10 0 0   100%
src/qdrant_loader/core/chunking/strategy/code_strategy.py CodeChunkingStrategy.__init__   10 0 0   100%
src/qdrant_loader/core/chunking/strategy/code_strategy.py CodeChunkingStrategy.chunk_document   34 9 0   74%
src/qdrant_loader/core/chunking/strategy/code_strategy.py CodeChunkingStrategy._fallback_chunking   10 10 0   0%
src/qdrant_loader/core/chunking/strategy/code_strategy.py CodeChunkingStrategy.shutdown   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/code_strategy.py (no function)   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor.create_chunk_document   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._create_text_specific_metadata   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._analyze_chunk_content   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._calculate_quality_metrics   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._extract_text_characteristics   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._extract_semantic_indicators   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._extract_entity_hints   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._estimate_readability   7 1 0   86%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._assess_chunk_completeness   15 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py TextChunkProcessor._detect_language_indicators   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_chunk_processor.py (no function)   16 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser.parse_document_structure   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser.extract_section_metadata   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._split_paragraphs   19 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._split_sentences   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._has_list_items   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._has_numbered_sections   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._analyze_formatting   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._calculate_content_density   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._is_new_paragraph_start   10 1 0   90%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._has_formatting_markers   5 1 0   80%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._is_list_item   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._is_numbered_item   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._classify_content_type   11 1 0   91%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._looks_like_header   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py TextDocumentParser._has_significant_indentation_change   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_document_parser.py (no function)   19 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py TextMetadataExtractor.extract_hierarchical_metadata   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py TextMetadataExtractor.extract_entities   11 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py TextMetadataExtractor._split_sentences   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py TextMetadataExtractor._calculate_avg_word_length   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py TextMetadataExtractor._estimate_reading_time   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py TextMetadataExtractor._detect_language   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py TextMetadataExtractor._calculate_text_density   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py TextMetadataExtractor._analyze_formatting   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_metadata_extractor.py (no function)   13 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter.split_sections   14 1 0   93%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter._split_by_paragraphs   7 1 0   86%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter._split_large_section   24 3 0   88%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter._find_best_split_point   22 1 0   95%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter._find_tokenizer_boundary   15 3 0   80%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter._score_split_point   12 1 0   92%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter._merge_small_sections   25 1 0   96%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter._has_special_formatting   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py TextSectionSplitter._analyze_paragraph_content   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/default/text_section_splitter.py (no function)   16 0 0   100%
src/qdrant_loader/core/chunking/strategy/default_strategy.py DefaultChunkingStrategy.__init__   12 1 0   92%
src/qdrant_loader/core/chunking/strategy/default_strategy.py DefaultChunkingStrategy.chunk_document   32 4 0   88%
src/qdrant_loader/core/chunking/strategy/default_strategy.py DefaultChunkingStrategy.shutdown   6 2 0   67%
src/qdrant_loader/core/chunking/strategy/default_strategy.py DefaultChunkingStrategy.__del__   4 2 0   50%
src/qdrant_loader/core/chunking/strategy/default_strategy.py (no function)   12 0 2   100%
src/qdrant_loader/core/chunking/strategy/docling_strategy.py DoclingChunkingStrategy.__init__   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/docling_strategy.py DoclingChunkingStrategy._build_config   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/docling_strategy.py DoclingChunkingStrategy.chunk_document   13 1 0   92%
src/qdrant_loader/core/chunking/strategy/docling_strategy.py DoclingChunkingStrategy.shutdown   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/docling_strategy.py DoclingChunkingStrategy.__del__   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/docling_strategy.py (no function)   15 0 6   100%
src/qdrant_loader/core/chunking/strategy/html/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_chunk_processor.py HTMLChunkProcessor.__init__   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_chunk_processor.py HTMLChunkProcessor.create_chunk_document   14 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_chunk_processor.py HTMLChunkProcessor.should_skip_semantic_analysis   19 4 0   79%
src/qdrant_loader/core/chunking/strategy/html/html_chunk_processor.py HTMLChunkProcessor._generate_chunk_title   9 5 0   44%
src/qdrant_loader/core/chunking/strategy/html/html_chunk_processor.py HTMLChunkProcessor._determine_skip_reason   19 9 0   53%
src/qdrant_loader/core/chunking/strategy/html/html_chunk_processor.py HTMLChunkProcessor._calculate_markup_ratio   6 2 0   67%
src/qdrant_loader/core/chunking/strategy/html/html_chunk_processor.py (no function)   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser.parse_document_structure   11 3 0   73%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser.extract_section_metadata   5 2 0   60%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser._extract_heading_hierarchy   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser._identify_semantic_elements   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser._extract_links   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser._analyze_accessibility   23 7 0   70%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser._extract_tag_metadata   13 7 0   46%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser._identify_section_type   26 9 0   65%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser._get_heading_level   3 1 0   67%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser.extract_section_title   20 6 0   70%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py HTMLDocumentParser._extract_title_from_content   7 2 0   71%
src/qdrant_loader/core/chunking/strategy/html/html_document_parser.py (no function)   32 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor.__init__   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor.extract_hierarchical_metadata   9 4 0   56%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor.extract_entities   19 4 0   79%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._build_dom_path_breadcrumb   23 5 0   78%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._extract_semantic_tags   9 2 0   78%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._calculate_accessibility_score   48 15 0   69%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._has_structured_data   19 7 0   63%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._analyze_interactive_elements   9 2 0   78%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._analyze_media_elements   10 5 0   50%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._analyze_html_features   13 2 0   85%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._analyze_seo_indicators   23 3 0   87%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py HTMLMetadataExtractor._assess_markup_quality   22 6 0   73%
src/qdrant_loader/core/chunking/strategy/html/html_metadata_extractor.py (no function)   19 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter.__init__   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter.split_sections   15 5 0   67%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._semantic_html_split   14 2 0   86%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._semantic_html_split.process_element   25 6 0   76%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._simple_html_split   13 3 0   77%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._fallback_split   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._is_meaningful_element   12 3 0   75%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._merge_small_sections   26 9 0   65%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._create_merged_section   11 8 0   27%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._split_large_sections   11 5 0   55%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._split_large_content   24 24 0   0%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._split_text_by_size   25 6 0   76%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py HTMLSectionSplitter._extract_text_from_html   6 6 0   0%
src/qdrant_loader/core/chunking/strategy/html/html_section_splitter.py (no function)   20 0 0   100%
src/qdrant_loader/core/chunking/strategy/html_strategy.py HTMLChunkingStrategy.__init__   10 0 0   100%
src/qdrant_loader/core/chunking/strategy/html_strategy.py HTMLChunkingStrategy.chunk_document   30 5 0   83%
src/qdrant_loader/core/chunking/strategy/html_strategy.py HTMLChunkingStrategy._fallback_chunking   18 6 0   67%
src/qdrant_loader/core/chunking/strategy/html_strategy.py HTMLChunkingStrategy._create_single_chunk_fallback   8 8 0   0%
src/qdrant_loader/core/chunking/strategy/html_strategy.py HTMLChunkingStrategy.__del__   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/html_strategy.py HTMLChunkingStrategy._split_text   6 6 0   0%
src/qdrant_loader/core/chunking/strategy/html_strategy.py HTMLChunkingStrategy.shutdown   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/html_strategy.py (no function)   15 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor.__init__   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor.create_chunk_document   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor.create_optimized_chunk_document   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor.create_json_element_chunk_document   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor._should_skip_nlp_for_json   10 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor._is_minimal_text_content   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor._is_minimal_text_content.count_text_in_values   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor._is_configuration_structure   11 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor._create_enhanced_metadata   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py JSONChunkProcessor._calculate_chunk_quality_indicators   16 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_chunk_processor.py (no function)   17 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONElement.add_child   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser.parse_document_structure   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser.extract_section_metadata   4 4 0   0%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser.parse_json_structure   10 3 0   70%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._create_json_element   11 2 0   82%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._extract_json_elements   40 9 0   78%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._calculate_nesting_depth   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._count_elements   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._infer_basic_schema   9 1 0   89%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._calculate_complexity_score   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._analyze_data_types   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._analyze_data_types.count_types   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._analyze_key_patterns   13 5 0   62%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._analyze_arrays   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py JSONDocumentParser._analyze_arrays.find_arrays   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_document_parser.py (no function)   41 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor.__init__   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor.extract_hierarchical_metadata   12 2 0   83%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor.extract_entities   7 7 0   0%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor.extract_json_element_metadata   16 2 0   88%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._infer_comprehensive_schema   16 1 0   94%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._identify_schema_patterns   23 7 0   70%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._calculate_nesting_depth   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._count_elements   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._calculate_complexity_score   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_data_types   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_data_types.count_types   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_value_distributions   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_value_distributions.analyze_value   25 3 0   88%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_key_patterns   21 7 0   67%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_array_statistics   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_array_statistics.find_arrays   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_null_values   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_null_values.check_nulls   12 3 0   75%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_uniqueness   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_uniqueness.check_uniqueness   12 1 0   92%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._classify_structure_type   15 7 0   53%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._detect_data_formats   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._detect_data_formats.check_formats   15 2 0   87%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._detect_relationships   12 4 0   67%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._detect_configuration_patterns   14 3 0   79%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._is_email   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._is_url   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._is_iso_date   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._is_uuid   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._estimate_object_completeness   5 1 0   80%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_array_homogeneity   7 1 0   86%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._analyze_simple_value   6 6 0   0%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._detect_value_format   16 3 0   81%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._calculate_element_significance   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._check_uniform_structure   4 1 0   75%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._extract_json_entities   16 16 0   0%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py JSONMetadataExtractor._extract_text_entities   7 7 0   0%
src/qdrant_loader/core/chunking/strategy/json/json_metadata_extractor.py (no function)   40 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_section_splitter.py JSONSectionSplitter.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_section_splitter.py JSONSectionSplitter.split_sections   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_section_splitter.py JSONSectionSplitter.split_json_elements   11 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_section_splitter.py JSONSectionSplitter._group_small_elements   24 4 0   83%
src/qdrant_loader/core/chunking/strategy/json/json_section_splitter.py JSONSectionSplitter._create_grouped_element   27 2 0   93%
src/qdrant_loader/core/chunking/strategy/json/json_section_splitter.py JSONSectionSplitter._split_large_element   64 15 0   77%
src/qdrant_loader/core/chunking/strategy/json/json_section_splitter.py JSONSectionSplitter.merge_small_sections   21 0 0   100%
src/qdrant_loader/core/chunking/strategy/json/json_section_splitter.py (no function)   16 0 0   100%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy.__init__   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy.chunk_document   36 11 0   69%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy._fallback_chunking   34 11 0   68%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy.get_strategy_name   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy.supports_document_type   11 5 0   55%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy.estimate_chunk_count   11 3 0   73%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy.shutdown   3 1 0   67%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy.__str__   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json_strategy.py JSONChunkingStrategy.__repr__   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/json_strategy.py (no function)   21 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/__init__.py (no function)   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/chunk_processor.py ChunkProcessor.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/chunk_processor.py ChunkProcessor.process_chunk   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/chunk_processor.py ChunkProcessor.create_chunk_document   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/chunk_processor.py ChunkProcessor.estimate_chunk_count   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/chunk_processor.py ChunkProcessor.shutdown   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/chunk_processor.py ChunkProcessor.__del__   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/chunk_processor.py (no function)   12 0 2   100%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py Section.add_child   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py SectionIdentifier.identify_section_type   13 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py HierarchyBuilder.build_section_breadcrumb   13 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py HierarchyBuilder.get_section_path   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py DocumentParser.__init__   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py DocumentParser.parse_document_structure   23 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py DocumentParser.extract_section_metadata   11 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py DocumentParser.extract_section_title   10 1 0   90%
src/qdrant_loader/core/chunking/strategy/markdown/document_parser.py (no function)   34 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/markdown_strategy.py MarkdownChunkingStrategy.__init__   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/markdown_strategy.py MarkdownChunkingStrategy.chunk_document   35 5 0   86%
src/qdrant_loader/core/chunking/strategy/markdown/markdown_strategy.py MarkdownChunkingStrategy._fallback_chunking   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/markdown_strategy.py MarkdownChunkingStrategy.chunk_overlap   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/markdown_strategy.py MarkdownChunkingStrategy.chunk_overlap   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/markdown_strategy.py MarkdownChunkingStrategy.shutdown   2 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/markdown_strategy.py MarkdownChunkingStrategy.__del__   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/markdown_strategy.py (no function)   20 0 2   100%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py CrossReferenceExtractor.extract_cross_references   10 5 0   50%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py EntityExtractor.extract_entities   12 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py HierarchyExtractor.map_hierarchical_relationships   17 2 0   88%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py TopicAnalyzer.analyze_topic   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py MetadataExtractor.__init__   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py MetadataExtractor.extract_all_metadata   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py MetadataExtractor.extract_hierarchical_metadata   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py MetadataExtractor._generate_anchor   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py MetadataExtractor.extract_section_title   10 10 0   0%
src/qdrant_loader/core/chunking/strategy/markdown/metadata_extractor.py (no function)   22 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py HeaderAnalysis.__post_init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionMetadata.__post_init__   8 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionMetadata._generate_anchor   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionSplitter.__init__   4 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionSplitter._is_excel_document   6 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionSplitter.analyze_header_distribution   23 4 0   83%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionSplitter.determine_optimal_split_levels   32 8 0   75%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionSplitter.build_enhanced_section_metadata   30 3 0   90%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionSplitter.split_sections   54 8 0   85%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py SectionSplitter.merge_related_sections   13 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/section_splitter.py (no function)   51 0 2   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/__init__.py (no function)   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/base.py BaseSplitter.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/base.py BaseSplitter.split_content   1 1 0   0%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/base.py (no function)   7 0 2   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/excel.py ExcelSplitter._is_table_line   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/excel.py ExcelSplitter._is_table_unit   4 1 0   75%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/excel.py ExcelSplitter.split_content   71 3 0   96%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/excel.py (no function)   9 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/fallback.py FallbackSplitter.split_content   12 1 0   92%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/fallback.py (no function)   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py MarkdownTableParser.parse   12 1 0   92%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py MarkdownTableParser._parse_table   15 4 0   73%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py MarkdownTableParser._row_cells   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py RowChunkContextualizer.preamble   5 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py RowChunkContextualizer.row_block   7 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py RowChunkContextualizer.build   5 1 0   80%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py RowKVChunker.__init__   1 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py RowKVChunker.chunk   20 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py RowKVExcelSplitter.__init__   3 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py RowKVExcelSplitter.split_content   13 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/row_kv_excel.py (no function)   31 0 0   100%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/standard.py StandardSplitter.split_content   51 2 0   96%
src/qdrant_loader/core/chunking/strategy/markdown/splitters/standard.py (no function)   5 0 0   100%
src/qdrant_loader/core/conversion/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/core/conversion/config.py ConversionConfig.from_profile   2 0 0   100%
src/qdrant_loader/core/conversion/config.py ConversionConfig._baseline_for   8 2 0   75%
src/qdrant_loader/core/conversion/config.py (no function)   53 0 0   100%
src/qdrant_loader/core/conversion/docling_engine.py DoclingConverter.__init__   3 0 0   100%
src/qdrant_loader/core/conversion/docling_engine.py DoclingConverter._converter   4 0 0   100%
src/qdrant_loader/core/conversion/docling_engine.py DoclingConverter.convert   2 0 0   100%
src/qdrant_loader/core/conversion/docling_engine.py (no function)   12 0 3   100%
src/qdrant_loader/core/conversion/engine.py ConversionEngine.convert   0 0 1   100%
src/qdrant_loader/core/conversion/engine.py build_engine   4 1 0   75%
src/qdrant_loader/core/conversion/engine.py (no function)   11 0 7   100%
src/qdrant_loader/core/conversion/formats.py FormatPolicy.__init__   1 0 0   100%
src/qdrant_loader/core/conversion/formats.py FormatPolicy.allowed_formats   6 1 0   83%
src/qdrant_loader/core/conversion/formats.py FormatPolicy.supported_mime_types   3 0 0   100%
src/qdrant_loader/core/conversion/formats.py FormatPolicy.is_within_size_limit   1 0 0   100%
src/qdrant_loader/core/conversion/formats.py (no function)   8 0 2   100%
src/qdrant_loader/core/conversion/options.py DoclingOptionsBuilder.__init__   1 0 0   100%
src/qdrant_loader/core/conversion/options.py DoclingOptionsBuilder.build_format_options   7 0 0   100%
src/qdrant_loader/core/conversion/options.py DoclingOptionsBuilder._build_pdf_pipeline_options   22 0 0   100%
src/qdrant_loader/core/conversion/options.py DoclingOptionsBuilder._build_picture_options   4 0 0   100%
src/qdrant_loader/core/conversion/options.py (no function)   8 0 4   100%
src/qdrant_loader/core/conversion/outcome.py ConvertedDocument.to_markdown   1 0 0   100%
src/qdrant_loader/core/conversion/outcome.py ConversionOutcome.succeeded   1 0 0   100%
src/qdrant_loader/core/conversion/outcome.py ConversionOutcome.skipped   1 1 0   0%
src/qdrant_loader/core/conversion/outcome.py ConversionOutcome.failed   1 1 0   0%
src/qdrant_loader/core/conversion/outcome.py ConversionOutcome.from_docling_result   10 0 0   100%
src/qdrant_loader/core/conversion/outcome.py (no function)   27 0 3   100%
src/qdrant_loader/core/conversion/postprocess.py postprocess_spreadsheet   4 0 0   100%
src/qdrant_loader/core/conversion/postprocess.py _dedupe_merged_cells   16 0 0   100%
src/qdrant_loader/core/conversion/postprocess.py _surface_sheet_headings   11 2 0   82%
src/qdrant_loader/core/conversion/postprocess.py (no function)   7 0 2   100%
src/qdrant_loader/core/conversion/service.py MarkitdownConverter.convert_file   0 0 1   100%
src/qdrant_loader/core/conversion/service.py MarkitdownConverter.create_fallback_document   0 0 1   100%
src/qdrant_loader/core/conversion/service.py ConversionService.__init__   2 0 0   100%
src/qdrant_loader/core/conversion/service.py ConversionService._docling_engine   1 0 0   100%
src/qdrant_loader/core/conversion/service.py ConversionService._markitdown_converter   4 2 0   50%
src/qdrant_loader/core/conversion/service.py ConversionService._file_detector   2 0 0   100%
src/qdrant_loader/core/conversion/service.py ConversionService.convert   6 1 0   83%
src/qdrant_loader/core/conversion/service.py ConversionService.is_supported   14 2 0   86%
src/qdrant_loader/core/conversion/service.py ConversionService._format_policy   1 0 0   100%
src/qdrant_loader/core/conversion/service.py ConversionService._convert_with_docling   9 0 0   100%
src/qdrant_loader/core/conversion/service.py ConversionService._convert_with_markitdown   7 0 0   100%
src/qdrant_loader/core/conversion/service.py ConversionService._file_type   2 0 0   100%
src/qdrant_loader/core/conversion/service.py (no function)   34 0 9   100%
src/qdrant_loader/core/conversion/settings.py DoclingPictureSettings.to_config   1 1 0   0%
src/qdrant_loader/core/conversion/settings.py DoclingConversionSettings.to_config   10 2 0   80%
src/qdrant_loader/core/conversion/settings.py (no function)   23 0 0   100%
src/qdrant_loader/core/document.py Document.converted_document   1 0 0   100%
src/qdrant_loader/core/document.py Document.converted_document   1 0 0   100%
src/qdrant_loader/core/document.py Document.__init__   5 0 0   100%
src/qdrant_loader/core/document.py Document.to_dict   1 1 0   0%
src/qdrant_loader/core/document.py Document.from_dict   6 6 0   0%
src/qdrant_loader/core/document.py Document.calculate_content_hash   10 0 0   100%
src/qdrant_loader/core/document.py Document.calculate_content_hash.normalize_value   9 0 0   100%
src/qdrant_loader/core/document.py Document.generate_id   13 0 0   100%
src/qdrant_loader/core/document.py Document.generate_id.normalize_url   14 3 0   79%
src/qdrant_loader/core/document.py Document.generate_id.normalize_string   3 0 0   100%
src/qdrant_loader/core/document.py Document.generate_chunk_id   4 0 0   100%
src/qdrant_loader/core/document.py Document.get_parent_id   1 0 0   100%
src/qdrant_loader/core/document.py Document.get_parent_title   1 0 0   100%
src/qdrant_loader/core/document.py Document.get_breadcrumb   1 0 0   100%
src/qdrant_loader/core/document.py Document.get_breadcrumb_text   1 0 0   100%
src/qdrant_loader/core/document.py Document.get_depth   1 0 0   100%
src/qdrant_loader/core/document.py Document.get_ancestors   1 1 0   0%
src/qdrant_loader/core/document.py Document.get_children   1 0 0   100%
src/qdrant_loader/core/document.py Document.is_root_document   1 0 0   100%
src/qdrant_loader/core/document.py Document.has_children   1 0 0   100%
src/qdrant_loader/core/document.py Document.get_hierarchy_context   10 0 0   100%
src/qdrant_loader/core/document.py Document.build_contextual_content   7 2 0   71%
src/qdrant_loader/core/document.py (no function)   48 0 2   100%
src/qdrant_loader/core/embedding/__init__.py (no function)   2 0 0   100%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService.__init__   20 0 0   100%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService._apply_rate_limit   5 0 0   100%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService._retry_with_backoff   23 12 0   48%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService.get_embeddings   58 20 0   66%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService._process_batch   8 2 0   75%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService._execute_embedding_request   8 3 0   62%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService.get_embedding   5 2 0   60%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService._execute_single_embedding_request   8 0 0   100%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService.count_tokens   3 0 0   100%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService.count_tokens_batch   1 0 0   100%
src/qdrant_loader/core/embedding/embedding_service.py EmbeddingService.get_embedding_dimension   5 2 0   60%
src/qdrant_loader/core/embedding/embedding_service.py (no function)   23 0 0   100%
src/qdrant_loader/core/embedding_service.py EmbeddingService.__init__   3 0 0   100%
src/qdrant_loader/core/embedding_service.py EmbeddingService.get_embedding   9 0 0   100%
src/qdrant_loader/core/embedding_service.py EmbeddingService.get_embeddings   9 0 0   100%
src/qdrant_loader/core/embedding_service.py (no function)   5 0 0   100%
src/qdrant_loader/core/file_conversion/__init__.py (no function)   7 0 0   100%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _clean_dataframe   5 0 0   100%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _is_blank_dataframe   3 0 0   100%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _cell_to_str   5 1 0   80%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _escape_string_cell   3 0 0   100%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _CleanSpreadsheetConverter.__init__   3 0 0   100%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _CleanSpreadsheetConverter.accepts   5 0 0   100%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _CleanSpreadsheetConverter.convert   11 1 0   91%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _CleanSpreadsheetConverter._heading   1 0 0   100%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py _CleanSpreadsheetConverter._render_subtable   11 2 0   82%
src/qdrant_loader/core/file_conversion/clean_xlsx_converter.py (no function)   30 0 0   100%
src/qdrant_loader/core/file_conversion/conversion_config.py FileConversionConfig.get_max_file_size_mb   1 0 0   100%
src/qdrant_loader/core/file_conversion/conversion_config.py FileConversionConfig.is_file_size_allowed   1 0 0   100%
src/qdrant_loader/core/file_conversion/conversion_config.py ConnectorFileConversionConfig.should_download_attachments   1 0 0   100%
src/qdrant_loader/core/file_conversion/conversion_config.py (no function)   20 0 0   100%
src/qdrant_loader/core/file_conversion/exceptions.py FileConversionError.__init__   3 0 0   100%
src/qdrant_loader/core/file_conversion/exceptions.py UnsupportedFileTypeError.__init__   2 0 0   100%
src/qdrant_loader/core/file_conversion/exceptions.py FileSizeExceededError.__init__   4 0 0   100%
src/qdrant_loader/core/file_conversion/exceptions.py ConversionTimeoutError.__init__   3 0 0   100%
src/qdrant_loader/core/file_conversion/exceptions.py MarkItDownError.__init__   3 0 0   100%
src/qdrant_loader/core/file_conversion/exceptions.py FileAccessError.__init__   5 0 0   100%
src/qdrant_loader/core/file_conversion/exceptions.py (no function)   12 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py capture_openpyxl_warnings   9 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py capture_openpyxl_warnings.warning_handler   9 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py TimeoutHandler.__init__   4 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py TimeoutHandler._timeout_handler   1 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py TimeoutHandler._timeout_thread   3 3 0   0%
src/qdrant_loader/core/file_conversion/file_converter.py TimeoutHandler.__enter__   8 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py TimeoutHandler.__exit__   6 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter.__init__   4 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._get_markitdown   19 2 0   89%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._register_custom_converters   3 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client   91 54 3   41%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client._ResponseMessage.__init__   1 1 0   0%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client._ResponseChoice.__init__   1 1 0   0%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client._Response.__init__   3 3 0   0%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client._Completions.__init__   1 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client._Completions.create   12 12 0   0%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client._Completions.create._run   4 4 0   0%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client._Chat.__init__   1 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._create_llm_client._OpenAICompatibleClient.__init__   1 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter.convert_file   19 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter._validate_file   13 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py FileConverter.create_fallback_document   3 0 0   100%
src/qdrant_loader/core/file_conversion/file_converter.py (no function)   30 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py FileDetector.__init__   3 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py FileDetector._add_custom_mime_types   3 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py FileDetector.detect_file_type   8 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py FileDetector._detect_mime_type   10 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py FileDetector.is_supported_for_conversion   15 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py FileDetector.get_file_type_info   15 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py FileDetector.get_supported_extensions   5 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py FileDetector.get_supported_mime_types   1 0 0   100%
src/qdrant_loader/core/file_conversion/file_detector.py (no function)   19 0 0   100%
src/qdrant_loader/core/file_conversion/sub_table_detector.py _BoundingBox.overlaps_row_wise   1 0 0   100%
src/qdrant_loader/core/file_conversion/sub_table_detector.py _box_width   1 0 0   100%
src/qdrant_loader/core/file_conversion/sub_table_detector.py SubTableDetector.detect   15 0 0   100%
src/qdrant_loader/core/file_conversion/sub_table_detector.py SubTableDetector._build_cell_graph   13 0 0   100%
src/qdrant_loader/core/file_conversion/sub_table_detector.py SubTableDetector._bounding_box   3 0 0   100%
src/qdrant_loader/core/file_conversion/sub_table_detector.py SubTableDetector._merge_row_overlapping   10 1 0   90%
src/qdrant_loader/core/file_conversion/sub_table_detector.py (no function)   20 0 0   100%
src/qdrant_loader/core/file_conversion/xlsx_markdown_format.py format_sheet_heading   3 0 0   100%
src/qdrant_loader/core/file_conversion/xlsx_markdown_format.py (no function)   4 0 0   100%
src/qdrant_loader/core/init_collection.py init_collection   19 0 0   100%
src/qdrant_loader/core/init_collection.py (no function)   8 1 0   88%
src/qdrant_loader/core/monitoring/__init__.py (no function)   4 0 0   100%
src/qdrant_loader/core/monitoring/batch_summary.py BatchSummary.update_batch_stats   17 4 0   76%
src/qdrant_loader/core/monitoring/batch_summary.py BatchSummary.get_size_statistics   6 2 0   67%
src/qdrant_loader/core/monitoring/batch_summary.py BatchSummary.get_source_statistics   1 0 0   100%
src/qdrant_loader/core/monitoring/batch_summary.py BatchSummary.get_summary   1 0 0   100%
src/qdrant_loader/core/monitoring/batch_summary.py (no function)   19 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py ConversionMetrics.average_conversion_time   3 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.__init__   9 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.start_operation   3 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.end_operation   12 2 0   83%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.start_batch   3 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.end_batch   36 3 0   92%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.start_conversion   7 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.end_conversion   24 2 0   92%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.record_attachment_processed   1 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.update_batch_conversion_metrics   9 2 0   78%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.get_conversion_summary   1 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.save_metrics   9 2 0   78%
src/qdrant_loader/core/monitoring/ingestion_metrics.py IngestionMonitor.clear_metrics   8 0 0   100%
src/qdrant_loader/core/monitoring/ingestion_metrics.py (no function)   65 0 0   100%
src/qdrant_loader/core/monitoring/processing_stats.py ProcessingStats.update_rates   17 5 0   71%
src/qdrant_loader/core/monitoring/processing_stats.py ProcessingStats.update_source_metrics   7 7 0   0%
src/qdrant_loader/core/monitoring/processing_stats.py ProcessingStats.get_latest_rates   3 0 0   100%
src/qdrant_loader/core/monitoring/processing_stats.py (no function)   17 0 0   100%
src/qdrant_loader/core/monitoring/prometheus_metrics.py start_metrics_server   10 0 0   100%
src/qdrant_loader/core/monitoring/prometheus_metrics.py stop_metrics_server   4 0 0   100%
src/qdrant_loader/core/monitoring/prometheus_metrics.py (no function)   17 0 0   100%
src/qdrant_loader/core/monitoring/resource_monitor.py monitor_resources   22 0 0   100%
src/qdrant_loader/core/monitoring/resource_monitor.py (no function)   5 0 0   100%
src/qdrant_loader/core/pipeline/__init__.py (no function)   10 0 0   100%
src/qdrant_loader/core/pipeline/config.py (no function)   9 0 0   100%
src/qdrant_loader/core/pipeline/document_pipeline.py BatchResult.__post_init__   6 6 0   0%
src/qdrant_loader/core/pipeline/document_pipeline.py DocumentPipeline.__init__   3 0 0   100%
src/qdrant_loader/core/pipeline/document_pipeline.py DocumentPipeline._process_graph   65 8 0   88%
src/qdrant_loader/core/pipeline/document_pipeline.py DocumentPipeline.process_batch   30 30 0   0%
src/qdrant_loader/core/pipeline/document_pipeline.py DocumentPipeline.process_documents   33 0 0   100%
src/qdrant_loader/core/pipeline/document_pipeline.py (no function)   29 0 0   100%
src/qdrant_loader/core/pipeline/factory.py PipelineComponentsFactory.create_components   23 3 0   87%
src/qdrant_loader/core/pipeline/factory.py (no function)   19 0 0   100%
src/qdrant_loader/core/pipeline/orchestrator.py _safe_document_size   4 0 0   100%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineComponents.__init__   5 0 0   100%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator.__init__   4 0 0   100%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._stream_batches_from_sources   19 8 0   58%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._stream_batches_from_sources._process_source_type   38 10 0   74%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._stream_batches_from_sources._process_source_type.connector_factory_with_checkpoint   12 2 0   83%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator.process_documents   131 31 0   76%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator.process_documents._persist_as_completed   3 1 0   67%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._format_indexing_failure_message   2 0 0   100%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._process_all_projects   44 2 0   95%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._detect_document_changes   20 1 0   95%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._process_deleted_documents   13 13 0   0%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._persist_single_document_state   6 2 0   67%
src/qdrant_loader/core/pipeline/orchestrator.py PipelineOrchestrator._update_document_states   12 0 0   100%
src/qdrant_loader/core/pipeline/orchestrator.py (no function)   33 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager.__init__   5 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager.set_chunk_executor   1 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager.register_signal_handlers   3 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager._cleanup   20 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager._async_cleanup   10 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager._handle_sigint   15 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager._handle_sigterm   15 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager._cancel_all_tasks   5 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager._force_immediate_exit   7 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager.cleanup   1 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py ResourceManager.add_task   2 0 0   100%
src/qdrant_loader/core/pipeline/resource_manager.py (no function)   18 0 0   100%
src/qdrant_loader/core/pipeline/source_filter.py SourceFilter.filter_sources   26 2 0   92%
src/qdrant_loader/core/pipeline/source_filter.py SourceFilter._filter_by_name   3 0 0   100%
src/qdrant_loader/core/pipeline/source_filter.py (no function)   4 0 0   100%
src/qdrant_loader/core/pipeline/source_processor.py SourceProcessor.__init__   2 0 0   100%
src/qdrant_loader/core/pipeline/source_processor.py SourceProcessor.process_source_type   33 2 0   94%
src/qdrant_loader/core/pipeline/source_processor.py SourceProcessor.stream_source_documents   27 27 0   0%
src/qdrant_loader/core/pipeline/source_processor.py (no function)   15 0 0   100%
src/qdrant_loader/core/pipeline/workers/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/core/pipeline/workers/base_worker.py BaseWorker.__init__   3 0 0   100%
src/qdrant_loader/core/pipeline/workers/base_worker.py BaseWorker.process   1 1 0   0%
src/qdrant_loader/core/pipeline/workers/base_worker.py BaseWorker.process_with_semaphore   2 0 0   100%
src/qdrant_loader/core/pipeline/workers/base_worker.py (no function)   10 0 0   100%
src/qdrant_loader/core/pipeline/workers/chunking_worker.py ChunkingWorker.__init__   4 0 0   100%
src/qdrant_loader/core/pipeline/workers/chunking_worker.py ChunkingWorker.process   29 2 0   93%
src/qdrant_loader/core/pipeline/workers/chunking_worker.py ChunkingWorker.process_documents   32 4 0   88%
src/qdrant_loader/core/pipeline/workers/chunking_worker.py ChunkingWorker.process_documents.process_and_yield   15 0 0   100%
src/qdrant_loader/core/pipeline/workers/chunking_worker.py ChunkingWorker._calculate_adaptive_timeout   17 1 0   94%
src/qdrant_loader/core/pipeline/workers/chunking_worker.py (no function)   15 0 0   100%
src/qdrant_loader/core/pipeline/workers/embedding_worker.py EmbeddingWorker.__init__   3 0 0   100%
src/qdrant_loader/core/pipeline/workers/embedding_worker.py EmbeddingWorker.process   27 3 0   89%
src/qdrant_loader/core/pipeline/workers/embedding_worker.py EmbeddingWorker._process_batch_guarded   9 0 0   100%
src/qdrant_loader/core/pipeline/workers/embedding_worker.py EmbeddingWorker.process_chunks   36 0 0   100%
src/qdrant_loader/core/pipeline/workers/embedding_worker.py EmbeddingWorker.process_chunks.drain_oldest   9 0 0   100%
src/qdrant_loader/core/pipeline/workers/embedding_worker.py EmbeddingWorker.process_chunks.dispatch   2 0 0   100%
src/qdrant_loader/core/pipeline/workers/embedding_worker.py (no function)   15 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py PipelineResult.__init__   8 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker.__init__   4 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker._handle_duplicate_chunk_ids   14 1 0   93%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker.process   25 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker._reserve_chunk_ids   9 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker._note_chunk_outcome   18 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker._merge_batch_outcome   17 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker.process_embedded_chunks   45 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker.process_embedded_chunks._notify   6 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker.process_embedded_chunks.drain_oldest   5 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py UpsertWorker.process_embedded_chunks.dispatch   3 0 0   100%
src/qdrant_loader/core/pipeline/workers/upsert_worker.py (no function)   21 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectContext.__init__   6 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectContext.to_metadata   6 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectContext.__repr__   1 1 0   0%
src/qdrant_loader/core/project_manager.py ProjectManager.__init__   5 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager.initialize   6 1 0   83%
src/qdrant_loader/core/project_manager.py ProjectManager._discover_projects   8 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager._validate_project_config   7 2 0   71%
src/qdrant_loader/core/project_manager.py ProjectManager._ensure_project_in_database   33 14 1   58%
src/qdrant_loader/core/project_manager.py ProjectManager._update_project_sources   36 5 1   86%
src/qdrant_loader/core/project_manager.py ProjectManager._calculate_config_hash   3 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager._calculate_source_config_hash   3 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager._source_config_to_dict   5 3 0   40%
src/qdrant_loader/core/project_manager.py ProjectManager.get_project_context   1 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager.get_all_project_contexts   1 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager.list_project_ids   1 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager.get_project_collection_name   2 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager.inject_project_metadata   7 2 0   71%
src/qdrant_loader/core/project_manager.py ProjectManager.validate_project_exists   1 0 0   100%
src/qdrant_loader/core/project_manager.py ProjectManager.get_project_stats   9 9 0   0%
src/qdrant_loader/core/project_manager.py ProjectManager.__repr__   1 1 0   0%
src/qdrant_loader/core/project_manager.py (no function)   32 0 0   100%
src/qdrant_loader/core/qdrant_manager.py QdrantConnectionError.__init__   4 0 0   100%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.__init__   9 0 0   100%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._is_api_key_present   4 0 0   100%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._resolve_sparse_runtime_config   7 3 0   57%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._get_collection_vector_capabilities   10 1 0   90%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._dense_query_using   4 1 0   75%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._sparse_upsert_enabled   9 9 0   0%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.build_point_vector   3 3 0   0%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._build_dense_payload   3 3 0   0%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._build_hybrid_payload   8 8 0   0%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.connect   15 0 0   100%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._ensure_client_connected   3 0 0   100%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.assert_collection_accessible   2 2 0   0%
src/qdrant_loader/core/qdrant_manager.py QdrantManager._ensure_payload_indexes   17 7 0   59%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.create_collection   45 9 0   80%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.upsert_points   8 0 0   100%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.search   11 1 0   91%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.search_with_project_filter   12 12 0   0%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.get_project_collections   14 14 0   0%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.delete_collection   7 0 0   100%
src/qdrant_loader/core/qdrant_manager.py QdrantManager.delete_points_by_document_id   8 0 0   100%
src/qdrant_loader/core/qdrant_manager.py (no function)   35 0 0   100%
src/qdrant_loader/core/state/__init__.py (no function)   4 0 0   100%
src/qdrant_loader/core/state/checkpoint_manager.py Checkpoint.to_dict   1 1 0   0%
src/qdrant_loader/core/state/checkpoint_manager.py Checkpoint.from_db   1 0 0   100%
src/qdrant_loader/core/state/checkpoint_manager.py CheckpointManager.__init__   1 0 0   100%
src/qdrant_loader/core/state/checkpoint_manager.py CheckpointManager.get_checkpoint   14 4 0   71%
src/qdrant_loader/core/state/checkpoint_manager.py CheckpointManager.save_checkpoint   21 10 0   52%
src/qdrant_loader/core/state/checkpoint_manager.py CheckpointManager.clear_checkpoint   13 5 0   62%
src/qdrant_loader/core/state/checkpoint_manager.py CheckpointManager.get_all_checkpoints   9 4 0   56%
src/qdrant_loader/core/state/checkpoint_manager.py CheckpointManager.clear_all_checkpoints   12 4 0   67%
src/qdrant_loader/core/state/checkpoint_manager.py (no function)   26 0 0   100%
src/qdrant_loader/core/state/document_state_manager.py DocumentStateManager.__init__   1 0 0   100%
src/qdrant_loader/core/state/document_state_manager.py DocumentStateManager._get_connection   1 0 0   100%
src/qdrant_loader/core/state/document_state_manager.py DocumentStateManager.update_document_state   17 0 0   100%
src/qdrant_loader/core/state/document_state_manager.py DocumentStateManager.get_document_state   22 0 0   100%
src/qdrant_loader/core/state/document_state_manager.py (no function)   9 0 0   100%
src/qdrant_loader/core/state/exceptions.py (no function)   9 0 0   100%
src/qdrant_loader/core/state/models.py UTCDateTime.process_bind_param   4 1 0   75%
src/qdrant_loader/core/state/models.py UTCDateTime.process_result_value   4 0 0   100%
src/qdrant_loader/core/state/models.py (no function)   113 0 0   100%
src/qdrant_loader/core/state/queries.py select_ingestion_history   4 0 0   100%
src/qdrant_loader/core/state/queries.py select_last_ingestion   4 0 0   100%
src/qdrant_loader/core/state/queries.py select_document_state   7 0 0   100%
src/qdrant_loader/core/state/queries.py (no function)   6 0 0   100%
src/qdrant_loader/core/state/session.py initialize_engine_and_session   15 2 0   87%
src/qdrant_loader/core/state/session.py create_tables   2 0 0   100%
src/qdrant_loader/core/state/session.py dispose_engine   1 0 0   100%
src/qdrant_loader/core/state/session.py (no function)   9 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector.__init__   3 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector.__aenter__   2 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector.__aexit__   2 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector.detect_changes   14 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector.classify_batch   26 26 0   0%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector._get_document_state   4 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector._is_document_updated   1 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector._create_deleted_document   3 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector._get_previous_states   8 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector._normalize_url   1 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector._generate_uri_from_document   1 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py StateChangeDetector._generate_uri   1 0 0   100%
src/qdrant_loader/core/state/state_change_detector.py (no function)   27 0 0   100%
src/qdrant_loader/core/state/state_manager.py StateManager.__init__   7 0 0   100%
src/qdrant_loader/core/state/state_manager.py StateManager.is_initialized   1 0 0   100%
src/qdrant_loader/core/state/state_manager.py StateManager.session_factory   3 3 0   0%
src/qdrant_loader/core/state/state_manager.py StateManager.queue_db_op_lock   1 1 0   0%
src/qdrant_loader/core/state/state_manager.py StateManager.get_session   5 2 1   60%
src/qdrant_loader/core/state/state_manager.py StateManager.create_session   1 1 0   0%
src/qdrant_loader/core/state/state_manager.py StateManager.__aenter__   7 2 0   71%
src/qdrant_loader/core/state/state_manager.py StateManager.__aexit__   1 0 0   100%
src/qdrant_loader/core/state/state_manager.py StateManager.initialize   27 4 0   85%
src/qdrant_loader/core/state/state_manager.py StateManager.dispose   7 0 0   100%
src/qdrant_loader/core/state/state_manager.py StateManager.update_last_ingestion   6 0 0   100%
src/qdrant_loader/core/state/state_manager.py StateManager.get_last_ingestion   6 3 0   50%
src/qdrant_loader/core/state/state_manager.py StateManager.get_project_document_count   9 9 3   0%
src/qdrant_loader/core/state/state_manager.py StateManager.get_project_latest_ingestion   9 9 3   0%
src/qdrant_loader/core/state/state_manager.py StateManager.mark_document_deleted   6 3 0   50%
src/qdrant_loader/core/state/state_manager.py StateManager.mark_documents_deleted_atomic   37 37 0   0%
src/qdrant_loader/core/state/state_manager.py StateManager.get_document_state_record   6 3 0   50%
src/qdrant_loader/core/state/state_manager.py StateManager.get_document_state_records_by_ids   6 6 0   0%
src/qdrant_loader/core/state/state_manager.py StateManager.get_document_state_records   6 3 0   50%
src/qdrant_loader/core/state/state_manager.py StateManager.update_document_state   11 5 0   55%
src/qdrant_loader/core/state/state_manager.py StateManager.update_document_states_batch   7 2 0   71%
src/qdrant_loader/core/state/state_manager.py StateManager.update_conversion_metrics   6 3 0   50%
src/qdrant_loader/core/state/state_manager.py StateManager.get_conversion_metrics   6 3 0   50%
src/qdrant_loader/core/state/state_manager.py StateManager.get_attachment_documents   6 3 0   50%
src/qdrant_loader/core/state/state_manager.py StateManager.get_converted_documents   6 3 0   50%
src/qdrant_loader/core/state/state_manager.py StateManager.close   4 4 0   0%
src/qdrant_loader/core/state/state_manager.py (no function)   45 0 2   100%
src/qdrant_loader/core/state/transitions.py update_last_ingestion   16 6 0   62%
src/qdrant_loader/core/state/transitions.py get_last_ingestion   6 1 0   83%
src/qdrant_loader/core/state/transitions.py mark_document_deleted   11 1 0   91%
src/qdrant_loader/core/state/transitions.py get_document_state_record   6 1 0   83%
src/qdrant_loader/core/state/transitions.py get_document_state_records   6 0 0   100%
src/qdrant_loader/core/state/transitions.py get_document_state_records_by_ids   8 8 0   0%
src/qdrant_loader/core/state/transitions.py update_document_state   4 0 0   100%
src/qdrant_loader/core/state/transitions.py update_document_states_batch   18 6 0   67%
src/qdrant_loader/core/state/transitions.py _apply_document_state_update   55 10 0   82%
src/qdrant_loader/core/state/transitions.py update_conversion_metrics   13 0 0   100%
src/qdrant_loader/core/state/transitions.py get_conversion_metrics   10 1 0   90%
src/qdrant_loader/core/state/transitions.py get_attachment_documents   3 0 0   100%
src/qdrant_loader/core/state/transitions.py get_converted_documents   6 0 0   100%
src/qdrant_loader/core/state/transitions.py (no function)   23 0 0   100%
src/qdrant_loader/core/state/utils.py ensure_parent_directory   6 3 2   50%
src/qdrant_loader/core/state/utils.py generate_sqlite_aiosqlite_url   10 1 0   90%
src/qdrant_loader/core/state/utils.py _normalize_async_url   5 2 0   60%
src/qdrant_loader/core/state/utils.py generate_database_url   4 0 0   100%
src/qdrant_loader/core/state/utils.py build_ingestion_history_select   6 6 0   0%
src/qdrant_loader/core/state/utils.py build_document_state_select   7 7 0   0%
src/qdrant_loader/core/state/utils.py (no function)   13 0 2   100%
src/qdrant_loader/core/text_processing/chunk_enricher.py _empty   1 0 0   100%
src/qdrant_loader/core/text_processing/chunk_enricher.py ChunkEnricher.__init__   6 0 0   100%
src/qdrant_loader/core/text_processing/chunk_enricher.py ChunkEnricher.enabled   1 0 0   100%
src/qdrant_loader/core/text_processing/chunk_enricher.py ChunkEnricher.fit_topics   6 0 0   100%
src/qdrant_loader/core/text_processing/chunk_enricher.py ChunkEnricher.enrich   13 0 0   100%
src/qdrant_loader/core/text_processing/chunk_enricher.py ChunkEnricher.shutdown   3 0 0   100%
src/qdrant_loader/core/text_processing/chunk_enricher.py (no function)   13 0 2   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py is_meaningful_text   1 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer.__init__   14 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer.__init__._load_nlp   9 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._build_cache_key   4 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer.analyze_text   26 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._extract_entities   15 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._get_pos_tags   8 1 0   88%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._get_dependencies   9 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer.fit_topic_model   19 5 0   74%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._extract_topics   24 5 0   79%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._infer_chunk_topics   8 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._extract_key_phrases   8 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._calculate_document_similarity   19 2 0   89%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._calculate_alternative_similarity   18 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer._calculate_topic_coherence   2 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer.clear_cache   6 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py SemanticAnalyzer.shutdown   4 0 0   100%
src/qdrant_loader/core/text_processing/semantic_analyzer.py (no function)   36 0 2   100%
src/qdrant_loader/core/text_processing/spacy_model_cache.py get_or_load   10 1 0   90%
src/qdrant_loader/core/text_processing/spacy_model_cache.py clear   2 0 0   100%
src/qdrant_loader/core/text_processing/spacy_model_cache.py (no function)   7 0 0   100%
src/qdrant_loader/core/text_processing/text_processor.py TextProcessor.__init__   14 0 0   100%
src/qdrant_loader/core/text_processing/text_processor.py TextProcessor.__init__._load_nlp   12 0 0   100%
src/qdrant_loader/core/text_processing/text_processor.py TextProcessor.process_text   13 0 0   100%
src/qdrant_loader/core/text_processing/text_processor.py TextProcessor.get_entities   8 1 0   88%
src/qdrant_loader/core/text_processing/text_processor.py TextProcessor.get_pos_tags   8 1 0   88%
src/qdrant_loader/core/text_processing/text_processor.py TextProcessor.split_into_chunks   10 0 0   100%
src/qdrant_loader/core/text_processing/text_processor.py (no function)   14 0 0   100%
src/qdrant_loader/core/text_processing/topic_modeler.py TopicModeler.__init__   13 4 0   69%
src/qdrant_loader/core/text_processing/topic_modeler.py TopicModeler._preprocess_text   4 1 0   75%
src/qdrant_loader/core/text_processing/topic_modeler.py TopicModeler.train_model   22 8 0   64%
src/qdrant_loader/core/text_processing/topic_modeler.py TopicModeler.infer_topics   26 14 0   46%
src/qdrant_loader/core/text_processing/topic_modeler.py (no function)   11 0 0   100%
src/qdrant_loader/core/worker/__init__.py (no function)   5 0 0   100%
src/qdrant_loader/core/worker/handlers.py JobHandler.__call__   0 0 1   100%
src/qdrant_loader/core/worker/handlers.py BaseJobHandler.__call__   5 0 0   100%
src/qdrant_loader/core/worker/handlers.py BaseJobHandler.handle_bulk_ingest   0 0 1   100%
src/qdrant_loader/core/worker/handlers.py BaseJobHandler.handle_incremental_pull   0 0 1   100%
src/qdrant_loader/core/worker/handlers.py BaseJobHandler._calculate_since_timestamp   3 0 0   100%
src/qdrant_loader/core/worker/handlers.py HandlerRegistry.__init__   1 0 0   100%
src/qdrant_loader/core/worker/handlers.py HandlerRegistry.register   2 0 0   100%
src/qdrant_loader/core/worker/handlers.py HandlerRegistry.handle   4 0 0   100%
src/qdrant_loader/core/worker/handlers.py HandlerRegistry.list_handlers   1 0 0   100%
src/qdrant_loader/core/worker/handlers.py IngestionJobHandler.__init__   2 0 0   100%
src/qdrant_loader/core/worker/handlers.py IngestionJobHandler._validated_required_fields   9 0 0   100%
src/qdrant_loader/core/worker/handlers.py IngestionJobHandler._extract_optional_fields   2 0 0   100%
src/qdrant_loader/core/worker/handlers.py IngestionJobHandler._extract_optional_fields._clean   2 0 0   100%
src/qdrant_loader/core/worker/handlers.py IngestionJobHandler.handle_bulk_ingest   8 0 0   100%
src/qdrant_loader/core/worker/handlers.py IngestionJobHandler.handle_incremental_pull   10 0 0   100%
src/qdrant_loader/core/worker/handlers.py (no function)   38 0 4   100%
src/qdrant_loader/core/worker/job_types.py JobType.__str__   1 1 0   0%
src/qdrant_loader/core/worker/job_types.py (no function)   8 0 0   100%
src/qdrant_loader/core/worker/pool.py QueueWorkerPool.__init__   18 2 0   89%
src/qdrant_loader/core/worker/pool.py QueueWorkerPool.run_until_empty   8 0 0   100%
src/qdrant_loader/core/worker/pool.py QueueWorkerPool.run_until_empty._set_worker_activity   5 0 0   100%
src/qdrant_loader/core/worker/pool.py QueueWorkerPool.run_until_empty.worker   88 21 0   76%
src/qdrant_loader/core/worker/pool.py QueueWorkerPool.run_until_empty.worker._renew_lease   13 0 0   100%
src/qdrant_loader/core/worker/pool.py QueueWorkerPool._get_source_lock   6 0 0   100%
src/qdrant_loader/core/worker/pool.py QueueWorkerPool._decode_payload   7 3 0   57%
src/qdrant_loader/core/worker/pool.py QueueWorkerPool._extract_source_key   4 0 0   100%
src/qdrant_loader/core/worker/pool.py (no function)   19 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.enqueue   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.claim_next   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.notify   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.mark_done   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.mark_failed   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.release_for_retry   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.extend_visibility   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.list   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.reset_to_pending   0 0 0   100%
src/qdrant_loader/core/worker/queue.py JobQueue.cancel   0 0 0   100%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.__init__   3 0 0   100%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.notify   1 1 0   0%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.enqueue   13 3 0   77%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.claim_next   29 3 0   90%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.mark_done   11 3 0   73%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.mark_failed   11 3 0   73%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.release_for_retry   16 4 0   75%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.extend_visibility   12 3 0   75%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.list   14 3 0   79%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.reset_to_pending   10 3 0   70%
src/qdrant_loader/core/worker/queue.py SQLiteJobQueue.cancel   11 3 0   73%
src/qdrant_loader/core/worker/queue.py (no function)   36 0 0   100%
src/qdrant_loader/core/worker/scheduler.py IncrementalPullScheduler.__init__   4 0 0   100%
src/qdrant_loader/core/worker/scheduler.py IncrementalPullScheduler.run   19 2 0   89%
src/qdrant_loader/core/worker/scheduler.py IncrementalPullScheduler.run_once   14 1 0   93%
src/qdrant_loader/core/worker/scheduler.py IncrementalPullScheduler._iter_project_sources   5 0 0   100%
src/qdrant_loader/core/worker/scheduler.py IncrementalPullScheduler._load_active_dedup_keys   16 0 0   100%
src/qdrant_loader/core/worker/scheduler.py IncrementalPullScheduler._job_dedup_key   14 5 0   64%
src/qdrant_loader/core/worker/scheduler.py (no function)   20 0 0   100%
src/qdrant_loader/main.py (no function)   3 1 0   67%
src/qdrant_loader/utils/__init__.py (no function)   0 0 0   100%
src/qdrant_loader/utils/logging.py QdrantVersionFilter.filter   1 1 0   0%
src/qdrant_loader/utils/logging.py ApplicationFilter.filter   1 1 0   0%
src/qdrant_loader/utils/logging.py SQLiteFilter.filter   3 3 0   0%
src/qdrant_loader/utils/logging.py VerbosityFilter.filter   5 5 0   0%
src/qdrant_loader/utils/logging.py UvicornAccessRedactFilter._redact_query_pair   4 4 0   0%
src/qdrant_loader/utils/logging.py UvicornAccessRedactFilter.filter   10 10 0   0%
src/qdrant_loader/utils/logging.py WindowsSafeConsoleHandler.emit   18 18 0   0%
src/qdrant_loader/utils/logging.py CleanFileHandler.emit   24 24 0   0%
src/qdrant_loader/utils/logging.py CleanFormatter.__init__   2 0 0   100%
src/qdrant_loader/utils/logging.py CleanFormatter.format   18 1 0   94%
src/qdrant_loader/utils/logging.py FileRenderer.__call__   5 5 0   0%
src/qdrant_loader/utils/logging.py FileFormatter.format   14 0 0   100%
src/qdrant_loader/utils/logging.py CustomConsoleRenderer.__init__   9 0 0   100%
src/qdrant_loader/utils/logging.py CustomConsoleRenderer._get_level_color   2 0 0   100%
src/qdrant_loader/utils/logging.py CustomConsoleRenderer.__call__   14 4 0   71%
src/qdrant_loader/utils/logging.py LoggingConfig.setup   50 50 0   0%
src/qdrant_loader/utils/logging.py LoggingConfig.setup._redact_sensitive   7 7 0   0%
src/qdrant_loader/utils/logging.py LoggingConfig.setup._redact_sensitive._is_sensitive_key   3 3 0   0%
src/qdrant_loader/utils/logging.py LoggingConfig.setup._redact_sensitive._mask   8 8 0   0%
src/qdrant_loader/utils/logging.py LoggingConfig.setup._redact_sensitive._sanitize_string   4 4 0   0%
src/qdrant_loader/utils/logging.py LoggingConfig.setup._redact_sensitive._deep_redact   15 15 0   0%
src/qdrant_loader/utils/logging.py LoggingConfig.get_logger   3 3 0   0%
src/qdrant_loader/utils/logging.py (no function)   49 2 0   96%
src/qdrant_loader/utils/sensitive.py _consume_input_value   43 6 0   86%
src/qdrant_loader/utils/sensitive.py _mask_input_value_segments   12 0 0   100%
src/qdrant_loader/utils/sensitive.py redact_sensitive_data   8 0 0   100%
src/qdrant_loader/utils/sensitive.py redact_sensitive_data._replace_field   4 0 0   100%
src/qdrant_loader/utils/sensitive.py sanitize_exception_message   6 0 0   100%
src/qdrant_loader/utils/sensitive.py (no function)   10 0 0   100%
src/qdrant_loader/utils/version_check.py VersionChecker.__init__   2 0 0   100%
src/qdrant_loader/utils/version_check.py VersionChecker._get_cache_data   11 0 0   100%
src/qdrant_loader/utils/version_check.py VersionChecker._save_cache_data   6 0 0   100%
src/qdrant_loader/utils/version_check.py VersionChecker._fetch_latest_version   7 0 0   100%
src/qdrant_loader/utils/version_check.py VersionChecker.check_for_updates   17 0 0   100%
src/qdrant_loader/utils/version_check.py VersionChecker.show_update_notification   5 0 0   100%
src/qdrant_loader/utils/version_check.py check_version_async   7 0 0   100%
src/qdrant_loader/utils/version_check.py check_version_async._check   4 0 0   100%
src/qdrant_loader/utils/version_check.py (no function)   17 0 0   100%
src/qdrant_loader/webhooks/__init__.py (no function)   2 0 0   100%
src/qdrant_loader/webhooks/auth.py _get_webhook_secret_from_env   1 0 0   100%
src/qdrant_loader/webhooks/auth.py _load_project_secrets   10 0 0   100%
src/qdrant_loader/webhooks/auth.py _cognito_jwt_enabled   1 0 0   100%
src/qdrant_loader/webhooks/auth.py webhook_auth_configured   4 0 0   100%
src/qdrant_loader/webhooks/auth.py get_webhook_secret   12 2 0   83%
src/qdrant_loader/webhooks/auth.py get_client_ip   10 5 0   50%
src/qdrant_loader/webhooks/auth.py _extract_bearer_token   6 1 0   83%
src/qdrant_loader/webhooks/auth.py _looks_like_jwt   1 0 0   100%
src/qdrant_loader/webhooks/auth.py CognitoJWTValidator._issuer   3 3 0   0%
src/qdrant_loader/webhooks/auth.py CognitoJWTValidator.validate_token   19 19 0   0%
src/qdrant_loader/webhooks/auth.py CognitoJWTValidator.extract_workspace_id   1 1 0   0%
src/qdrant_loader/webhooks/auth.py verify_webhook_token   13 2 0   85%
src/qdrant_loader/webhooks/auth.py verify_cognito_token   4 4 0   0%
src/qdrant_loader/webhooks/auth.py verify_ingest_auth   1 0 0   100%
src/qdrant_loader/webhooks/auth.py (no function)   35 0 0   100%
src/qdrant_loader/webhooks/event_processor.py process_change_event   13 13 0   0%
src/qdrant_loader/webhooks/event_processor.py _process_single_upsert   18 18 0   0%
src/qdrant_loader/webhooks/event_processor.py _process_single_delete   10 10 0   0%
src/qdrant_loader/webhooks/event_processor.py _document_from_delete_payload   14 14 0   0%
src/qdrant_loader/webhooks/event_processor.py _resolve_source_config   27 27 0   0%
src/qdrant_loader/webhooks/event_processor.py (no function)   15 0 0   100%
src/qdrant_loader/webhooks/handlers.py normalize_source_type   4 0 0   100%
src/qdrant_loader/webhooks/handlers.py normalize_ingest_source_type   4 0 0   100%
src/qdrant_loader/webhooks/handlers.py summarize_payload   7 7 0   0%
src/qdrant_loader/webhooks/handlers.py enqueue_webhook_event   18 0 0   100%
src/qdrant_loader/webhooks/handlers.py enqueue_ingest_request   9 0 0   100%
src/qdrant_loader/webhooks/handlers.py (no function)   15 0 0   100%
src/qdrant_loader/webhooks/queue_backend.py ChangeEvent.to_payload   1 1 0   0%
src/qdrant_loader/webhooks/queue_backend.py ChangeEvent.from_payload   1 1 0   0%
src/qdrant_loader/webhooks/queue_backend.py QueueBackend.enqueue   0 0 0   100%
src/qdrant_loader/webhooks/queue_backend.py QueueBackend.close   0 0 0   100%
src/qdrant_loader/webhooks/queue_backend.py SQLiteChangeEventQueue.__init__   1 0 0   100%
src/qdrant_loader/webhooks/queue_backend.py SQLiteChangeEventQueue.enqueue   3 3 0   0%
src/qdrant_loader/webhooks/queue_backend.py SQLiteChangeEventQueue.job_queue   1 1 0   0%
src/qdrant_loader/webhooks/queue_backend.py SQLiteChangeEventQueue.close   1 1 0   0%
src/qdrant_loader/webhooks/queue_backend.py QueueBackendManager.initialize   13 1 0   92%
src/qdrant_loader/webhooks/queue_backend.py QueueBackendManager.get_backend   3 1 0   67%
src/qdrant_loader/webhooks/queue_backend.py QueueBackendManager.get_job_queue   3 1 0   67%
src/qdrant_loader/webhooks/queue_backend.py QueueBackendManager.shutdown   6 0 0   100%
src/qdrant_loader/webhooks/queue_backend.py QueueBackendManager.set_backend   2 0 0   100%
src/qdrant_loader/webhooks/queue_backend.py QueueBackendManager.reset   4 0 0   100%
src/qdrant_loader/webhooks/queue_backend.py parse_job_payload   2 2 0   0%
src/qdrant_loader/webhooks/queue_backend.py (no function)   56 0 0   100%
src/qdrant_loader/webhooks/server.py _lifespan   18 1 0   94%
src/qdrant_loader/webhooks/server.py _cleanup_old_timestamps   4 0 0   100%
src/qdrant_loader/webhooks/server.py _enforce_rate_limit   7 2 0   71%
src/qdrant_loader/webhooks/server.py _parse_json_request   5 3 0   40%
src/qdrant_loader/webhooks/server.py _handle_webhook   12 3 0   75%
src/qdrant_loader/webhooks/server.py health_check   1 1 0   0%
src/qdrant_loader/webhooks/server.py healthz   1 1 0   0%
src/qdrant_loader/webhooks/server.py readyz   10 10 0   0%
src/qdrant_loader/webhooks/server.py status_route   1 1 0   0%
src/qdrant_loader/webhooks/server.py ingest_route   9 3 0   67%
src/qdrant_loader/webhooks/server.py webhook_project_route   1 0 0   100%
src/qdrant_loader/webhooks/server.py webhook_source_route   1 0 0   100%
src/qdrant_loader/webhooks/server.py (no function)   38 0 0   100%
src/qdrant_loader/webhooks/single_event_handler.py parse_webhook_event   20 6 0   70%
src/qdrant_loader/webhooks/single_event_handler.py _map_jira_event_to_operation   2 0 0   100%
src/qdrant_loader/webhooks/single_event_handler.py (no function)   7 0 0   100%
src/qdrant_loader/webhooks/worker.py run_webhook_worker   22 18 0   18%
src/qdrant_loader/webhooks/worker.py (no function)   12 0 0   100%
Total     17186 3262 163   81%

No items found using the specified filter.