Coverage report: 25%

Files Functions Classes

coverage.py v7.13.0, created at 2025-12-16 11:17 -0700

File function   statements missing excluded   coverage
src / dataknobs_bots / api / dependencies.py _BotManagerSingleton.get   4 4 0   0%
src / dataknobs_bots / api / dependencies.py _BotManagerSingleton.init   3 3 0   0%
src / dataknobs_bots / api / dependencies.py _BotManagerSingleton.reset   2 2 0   0%
src / dataknobs_bots / api / dependencies.py get_bot_manager   1 1 0   0%
src / dataknobs_bots / api / dependencies.py init_bot_manager   1 1 0   0%
src / dataknobs_bots / api / dependencies.py reset_bot_manager   1 1 0   0%
src / dataknobs_bots / api / dependencies.py _get_bot_manager_dep   1 1 0   0%
src / dataknobs_bots / api / dependencies.py (no function)   22 22 0   0%
src / dataknobs_bots / api / exceptions.py APIError.__init__   3 3 0   0%
src / dataknobs_bots / api / exceptions.py APIError.detail   1 1 0   0%
src / dataknobs_bots / api / exceptions.py APIError.to_dict   1 1 0   0%
src / dataknobs_bots / api / exceptions.py BotNotFoundError.__init__   1 1 0   0%
src / dataknobs_bots / api / exceptions.py BotCreationError.__init__   1 1 0   0%
src / dataknobs_bots / api / exceptions.py ConversationNotFoundError.__init__   1 1 0   0%
src / dataknobs_bots / api / exceptions.py ValidationError.__init__   1 1 0   0%
src / dataknobs_bots / api / exceptions.py ConfigurationError.__init__   4 4 0   0%
src / dataknobs_bots / api / exceptions.py RateLimitError.__init__   4 4 0   0%
src / dataknobs_bots / api / exceptions.py api_error_handler   2 2 0   0%
src / dataknobs_bots / api / exceptions.py http_exception_handler   2 2 0   0%
src / dataknobs_bots / api / exceptions.py general_exception_handler   5 5 0   0%
src / dataknobs_bots / api / exceptions.py register_exception_handlers   4 4 0   0%
src / dataknobs_bots / api / exceptions.py (no function)   28 28 3   0%
src / dataknobs_bots / bot / base.py DynaBot.__init__   14 14 0   0%
src / dataknobs_bots / bot / base.py DynaBot.from_config   75 75 0   0%
src / dataknobs_bots / bot / base.py DynaBot.from_environment_aware_config   12 12 0   0%
src / dataknobs_bots / bot / base.py DynaBot.get_portable_config   7 7 0   0%
src / dataknobs_bots / bot / base.py DynaBot.chat   18 18 0   0%
src / dataknobs_bots / bot / base.py DynaBot.stream_chat   27 27 0   0%
src / dataknobs_bots / bot / base.py DynaBot.get_conversation   1 1 0   0%
src / dataknobs_bots / bot / base.py DynaBot.clear_conversation   3 3 0   0%
src / dataknobs_bots / bot / base.py DynaBot.close   10 10 0   0%
src / dataknobs_bots / bot / base.py DynaBot.__aenter__   1 1 0   0%
src / dataknobs_bots / bot / base.py DynaBot.__aexit__   1 1 0   0%
src / dataknobs_bots / bot / base.py DynaBot._get_or_create_conversation   21 21 0   0%
src / dataknobs_bots / bot / base.py DynaBot._build_message_with_context   28 28 0   0%
src / dataknobs_bots / bot / base.py DynaBot._resolve_tool   45 45 0   0%
src / dataknobs_bots / bot / base.py DynaBot._create_middleware   8 8 0   0%
src / dataknobs_bots / bot / base.py (no function)   33 0 2   100%
src / dataknobs_bots / bot / context.py BotContext.__getitem__   1 1 0   0%
src / dataknobs_bots / bot / context.py BotContext.__setitem__   1 1 0   0%
src / dataknobs_bots / bot / context.py BotContext.__contains__   1 1 0   0%
src / dataknobs_bots / bot / context.py BotContext.get   1 1 0   0%
src / dataknobs_bots / bot / context.py BotContext.copy   1 1 0   0%
src / dataknobs_bots / bot / context.py (no function)   14 0 0   100%
src / dataknobs_bots / bot / manager.py ConfigLoader.load   1 1 0   0%
src / dataknobs_bots / bot / manager.py AsyncConfigLoader.load   1 1 0   0%
src / dataknobs_bots / bot / manager.py BotManager.__init__   14 14 0   0%
src / dataknobs_bots / bot / manager.py BotManager.environment_name   1 1 0   0%
src / dataknobs_bots / bot / manager.py BotManager.environment   1 1 0   0%
src / dataknobs_bots / bot / manager.py BotManager.get_or_create   22 22 0   0%
src / dataknobs_bots / bot / manager.py BotManager.get   1 1 0   0%
src / dataknobs_bots / bot / manager.py BotManager.remove   5 5 0   0%
src / dataknobs_bots / bot / manager.py BotManager.reload   4 4 0   0%
src / dataknobs_bots / bot / manager.py BotManager.list_bots   1 1 0   0%
src / dataknobs_bots / bot / manager.py BotManager.get_bot_count   1 1 0   0%
src / dataknobs_bots / bot / manager.py BotManager._load_config   15 15 0   0%
src / dataknobs_bots / bot / manager.py BotManager.clear_all   2 2 0   0%
src / dataknobs_bots / bot / manager.py BotManager.get_portable_config   1 1 0   0%
src / dataknobs_bots / bot / manager.py BotManager.__repr__   0 0 4   100%
src / dataknobs_bots / bot / manager.py (no function)   30 0 3   100%
src / dataknobs_bots / bot / registry.py BotRegistry.__init__   19 19 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.backend   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.environment   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.environment_name   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.cache_ttl   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.max_cache_size   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.initialize   4 4 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.close   5 5 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.register   9 9 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.get_bot   20 20 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.get_config   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.get_registration   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.unregister   7 7 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.deactivate   7 7 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.exists   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.list_bots   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.count   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.get_cached_bots   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.clear_cache   2 2 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry._evict_oldest   5 5 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.register_client   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.remove_client   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.get_cached_clients   1 1 0   0%
src / dataknobs_bots / bot / registry.py BotRegistry.__repr__   0 0 6   100%
src / dataknobs_bots / bot / registry.py InMemoryBotRegistry.__init__   1 1 0   0%
src / dataknobs_bots / bot / registry.py InMemoryBotRegistry.clear   3 3 0   0%
src / dataknobs_bots / bot / registry.py InMemoryBotRegistry.__repr__   0 0 3   100%
src / dataknobs_bots / bot / registry.py create_memory_registry   1 1 0   0%
src / dataknobs_bots / bot / registry.py (no function)   42 0 5   100%
src / dataknobs_bots / config / resolution.py create_bot_resolver   9 0 0   100%
src / dataknobs_bots / config / resolution.py register_llm_factory   4 0 0   100%
src / dataknobs_bots / config / resolution.py register_database_factory   4 0 0   100%
src / dataknobs_bots / config / resolution.py register_vector_store_factory   4 0 0   100%
src / dataknobs_bots / config / resolution.py register_embedding_factory   4 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.__init__   2 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.environment   1 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.resolver   1 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.get_llm   3 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.get_database   4 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.get_vector_store   4 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.get_embedding_provider   3 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.clear_cache   1 0 0   100%
src / dataknobs_bots / config / resolution.py BotResourceResolver.__repr__   0 0 3   100%
src / dataknobs_bots / config / resolution.py (no function)   20 0 3   100%
src / dataknobs_bots / knowledge / query / expander.py ContextualExpander.__init__   4 4 0   0%
src / dataknobs_bots / knowledge / query / expander.py ContextualExpander.expand   7 7 0   0%
src / dataknobs_bots / knowledge / query / expander.py ContextualExpander._normalize_messages   7 7 0   0%
src / dataknobs_bots / knowledge / query / expander.py ContextualExpander._get_recent_context   9 9 0   0%
src / dataknobs_bots / knowledge / query / expander.py ContextualExpander._extract_keywords   10 10 0   0%
src / dataknobs_bots / knowledge / query / expander.py ContextualExpander.expand_with_topics   12 12 0   0%
src / dataknobs_bots / knowledge / query / expander.py is_ambiguous_query   9 9 0   0%
src / dataknobs_bots / knowledge / query / expander.py (no function)   15 0 0   100%
src / dataknobs_bots / knowledge / query / transformer.py QueryTransformer.__init__   3 3 0   0%
src / dataknobs_bots / knowledge / query / transformer.py QueryTransformer.initialize   7 7 0   0%
src / dataknobs_bots / knowledge / query / transformer.py QueryTransformer.close   3 3 0   0%
src / dataknobs_bots / knowledge / query / transformer.py QueryTransformer.transform   9 9 0   0%
src / dataknobs_bots / knowledge / query / transformer.py QueryTransformer._build_prompt   4 4 0   0%
src / dataknobs_bots / knowledge / query / transformer.py QueryTransformer._parse_response   11 11 0   0%
src / dataknobs_bots / knowledge / query / transformer.py QueryTransformer.transform_with_context   9 9 0   0%
src / dataknobs_bots / knowledge / query / transformer.py QueryTransformer._build_contextual_prompt   4 4 0   0%
src / dataknobs_bots / knowledge / query / transformer.py create_transformer   4 4 0   0%
src / dataknobs_bots / knowledge / query / transformer.py (no function)   20 0 0   100%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.__init__   5 5 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.from_config   19 19 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.load_markdown_document   31 31 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.load_documents_from_directory   12 12 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.load_json_document   8 8 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.load_yaml_document   5 5 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.load_csv_document   5 5 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase._load_markdown_text   29 29 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.query   16 16 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.format_context   4 4 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.clear   2 2 1   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.save   2 2 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.close   4 4 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.__aenter__   1 1 0   0%
src / dataknobs_bots / knowledge / rag.py RAGKnowledgeBase.__aexit__   1 1 0   0%
src / dataknobs_bots / knowledge / rag.py (no function)   22 0 0   100%
src / dataknobs_bots / knowledge / retrieval / formatter.py ContextFormatter.__init__   1 1 0   0%
src / dataknobs_bots / knowledge / retrieval / formatter.py ContextFormatter.format   9 9 0   0%
src / dataknobs_bots / knowledge / retrieval / formatter.py ContextFormatter.format_merged   6 6 0   0%
src / dataknobs_bots / knowledge / retrieval / formatter.py ContextFormatter._format_result   24 24 0   0%
src / dataknobs_bots / knowledge / retrieval / formatter.py ContextFormatter._get_display_headings   7 7 0   0%
src / dataknobs_bots / knowledge / retrieval / formatter.py ContextFormatter._format_grouped_by_source   17 17 0   0%
src / dataknobs_bots / knowledge / retrieval / formatter.py ContextFormatter.wrap_for_prompt   3 3 0   0%
src / dataknobs_bots / knowledge / retrieval / formatter.py (no function)   19 0 0   100%
src / dataknobs_bots / knowledge / retrieval / merger.py ChunkMerger.__init__   1 1 0   0%
src / dataknobs_bots / knowledge / retrieval / merger.py ChunkMerger.merge   17 17 0   0%
src / dataknobs_bots / knowledge / retrieval / merger.py ChunkMerger._normalize_heading_path   10 10 0   0%
src / dataknobs_bots / knowledge / retrieval / merger.py ChunkMerger._sort_by_position   2 2 0   0%
src / dataknobs_bots / knowledge / retrieval / merger.py ChunkMerger._sort_by_position.get_position   2 2 0   0%
src / dataknobs_bots / knowledge / retrieval / merger.py ChunkMerger._merge_chunk_group   17 17 0   0%
src / dataknobs_bots / knowledge / retrieval / merger.py ChunkMerger._create_merged_chunk   6 6 0   0%
src / dataknobs_bots / knowledge / retrieval / merger.py ChunkMerger.to_result_list   4 4 0   0%
src / dataknobs_bots / knowledge / retrieval / merger.py (no function)   25 0 0   100%
src / dataknobs_bots / memory / base.py Memory.add_message   0 0 8   100%
src / dataknobs_bots / memory / base.py Memory.get_context   0 0 9   100%
src / dataknobs_bots / memory / base.py Memory.clear   0 0 2   100%
src / dataknobs_bots / memory / base.py (no function)   3 0 8   100%
src / dataknobs_bots / memory / buffer.py BufferMemory.__init__   2 2 0   0%
src / dataknobs_bots / memory / buffer.py BufferMemory.add_message   1 1 0   0%
src / dataknobs_bots / memory / buffer.py BufferMemory.get_context   1 1 0   0%
src / dataknobs_bots / memory / buffer.py BufferMemory.clear   1 1 0   0%
src / dataknobs_bots / memory / buffer.py (no function)   8 0 0   100%
src / dataknobs_bots / memory / vector.py VectorMemory.__init__   4 4 0   0%
src / dataknobs_bots / memory / vector.py VectorMemory.from_config   16 16 0   0%
src / dataknobs_bots / memory / vector.py VectorMemory.add_message   7 7 0   0%
src / dataknobs_bots / memory / vector.py VectorMemory.get_context   9 9 0   0%
src / dataknobs_bots / memory / vector.py VectorMemory.clear   2 2 1   0%
src / dataknobs_bots / memory / vector.py (no function)   12 0 0   100%
src / dataknobs_bots / middleware / base.py Middleware.before_message   0 0 7   100%
src / dataknobs_bots / middleware / base.py Middleware.after_message   0 0 8   100%
src / dataknobs_bots / middleware / base.py Middleware.post_stream   0 0 12   100%
src / dataknobs_bots / middleware / base.py Middleware.on_error   0 0 8   100%
src / dataknobs_bots / middleware / base.py (no function)   4 0 14   100%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.__init__   11 11 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.before_message   2 2 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.after_message   34 34 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.post_stream   23 23 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.on_error   1 1 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware._calculate_cost   17 17 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.get_client_stats   1 1 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.get_all_stats   1 1 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.get_total_cost   1 1 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.get_total_tokens   3 3 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.clear_stats   4 4 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.export_stats_json   1 1 0   0%
src / dataknobs_bots / middleware / cost.py CostTrackingMiddleware.export_stats_csv   4 4 0   0%
src / dataknobs_bots / middleware / cost.py (no function)   21 0 0   100%
src / dataknobs_bots / middleware / logging.py LoggingMiddleware.__init__   5 5 0   0%
src / dataknobs_bots / middleware / logging.py LoggingMiddleware.before_message   8 8 0   0%
src / dataknobs_bots / middleware / logging.py LoggingMiddleware.after_message   16 16 0   0%
src / dataknobs_bots / middleware / logging.py LoggingMiddleware.post_stream   9 9 0   0%
src / dataknobs_bots / middleware / logging.py LoggingMiddleware.on_error   4 4 0   0%
src / dataknobs_bots / middleware / logging.py (no function)   13 0 0   100%
src / dataknobs_bots / reasoning / base.py ReasoningStrategy.generate   0 0 23   100%
src / dataknobs_bots / reasoning / base.py (no function)   3 0 8   100%
src / dataknobs_bots / reasoning / react.py ReActReasoning.__init__   3 3 0   0%
src / dataknobs_bots / reasoning / react.py ReActReasoning.generate   50 50 0   0%
src / dataknobs_bots / reasoning / react.py ReActReasoning._store_trace   7 7 0   0%
src / dataknobs_bots / reasoning / react.py ReActReasoning._find_tool   4 4 0   0%
src / dataknobs_bots / reasoning / react.py (no function)   9 0 0   100%
src / dataknobs_bots / reasoning / simple.py SimpleReasoning.generate   1 1 0   0%
src / dataknobs_bots / reasoning / simple.py (no function)   4 0 0   100%
src / dataknobs_bots / registry / backend.py RegistryBackend.initialize   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.close   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.register   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.get   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.get_config   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.exists   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.unregister   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.deactivate   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.list_active   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.list_all   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.list_ids   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.count   1 1 0   0%
src / dataknobs_bots / registry / backend.py RegistryBackend.clear   1 1 0   0%
src / dataknobs_bots / registry / backend.py (no function)   17 0 2   100%
src / dataknobs_bots / registry / memory.py InMemoryBackend.__init__   3 3 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.initialize   1 1 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.close   3 3 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.register   8 8 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.get   6 6 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.get_config   2 2 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.exists   3 3 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.unregister   5 5 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.deactivate   6 6 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.list_active   2 2 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.list_all   2 2 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.list_ids   2 2 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.count   2 2 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.clear   2 2 0   0%
src / dataknobs_bots / registry / memory.py InMemoryBackend.__repr__   0 0 2   100%
src / dataknobs_bots / registry / memory.py (no function)   20 0 1   100%
src / dataknobs_bots / registry / models.py Registration.to_dict   1 1 0   0%
src / dataknobs_bots / registry / models.py Registration.from_dict   1 1 0   0%
src / dataknobs_bots / registry / models.py Registration.__repr__   0 0 5   100%
src / dataknobs_bots / registry / models.py (no function)   15 0 1   100%
src / dataknobs_bots / registry / portability.py validate_portability   11 11 0   0%
src / dataknobs_bots / registry / portability.py _is_in_safe_pattern   5 5 0   0%
src / dataknobs_bots / registry / portability.py has_resource_references   1 1 0   0%
src / dataknobs_bots / registry / portability.py is_portable   4 4 0   0%
src / dataknobs_bots / registry / portability.py (no function)   11 0 0   100%
src / dataknobs_bots / tools / knowledge_search.py KnowledgeSearchTool.__init__   2 2 0   0%
src / dataknobs_bots / tools / knowledge_search.py KnowledgeSearchTool.schema   1 1 0   0%
src / dataknobs_bots / tools / knowledge_search.py KnowledgeSearchTool.execute   3 3 0   0%
src / dataknobs_bots / tools / knowledge_search.py (no function)   7 0 0   100%
Total     1691 1260 152   25%

No items found using the specified filter.