Hypergraph is more powerful. Transform unstructured text into structured knowledge with LLMs. Graphs, hypergraphs, and spatio-temporal extractions — with one command.
This report presents the forensic synthetic code analysis of yifanfeng97/Hyper-Extract, a Python project with 3,055 GitHub stars. SynthScan v2.0 examined 75,853 lines of code across 444 source files, recording 883 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 23.6 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 883 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_mcp_server.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_mcp_server.py | 52 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_mcp_server.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_mcp_server.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_mcp_server.py | 84 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_mcp_server.py | 86 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_mcp_server.py | 148 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_mcp_server.py | 150 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 17 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 19 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 37 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 111 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 113 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_anthropic.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 85 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 87 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 122 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 124 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 171 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 173 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 217 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 219 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 263 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 265 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 284 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_obsidian.py | 286 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/utils/test_obsidian.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/utils/test_obsidian.py | 22 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/utils/test_client.py | 143 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/utils/test_client.py | 145 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/utils/test_client.py | 190 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/utils/test_client.py | 192 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/utils/test_client.py | 402 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/utils/test_client.py | 404 | # ============================================================================= | COMMENT |
| MEDIUM | tests/utils/test_client.py | 21 | # ============================================================================= | COMMENT |
| MEDIUM | tests/utils/test_client.py | 23 | # ============================================================================= | COMMENT |
| MEDIUM | tests/utils/test_client.py | 85 | # ============================================================================= | COMMENT |
| MEDIUM | tests/utils/test_client.py | 87 | # ============================================================================= | COMMENT |
| MEDIUM | tests/utils/test_client.py | 441 | # ============================================================================= | COMMENT |
| MEDIUM | tests/utils/test_client.py | 443 | # ============================================================================= | COMMENT |
| MEDIUM | hyperextract/mcp_server.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hyperextract/mcp_server.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hyperextract/mcp_server.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hyperextract/mcp_server.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hyperextract/mcp_server.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hyperextract/mcp_server.py | 230 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hyperextract/types/spatio_temporal_graph.py | 17 | # ============================================================================== | COMMENT |
| MEDIUM | hyperextract/types/spatio_temporal_graph.py | 19 | # ============================================================================== | COMMENT |
| MEDIUM | hyperextract/types/spatio_temporal_graph.py | 263 | # ============================================================================== | STRING |
| MEDIUM | hyperextract/types/spatio_temporal_graph.py | 265 | # ============================================================================== | STRING |
| MEDIUM | hyperextract/types/temporal_graph.py | 17 | # ============================================================================== | COMMENT |
| MEDIUM | hyperextract/types/temporal_graph.py | 19 | # ============================================================================== | COMMENT |
| 110 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/zh/python/quickstart.md | 24 | os.environ["OPENAI_API_KEY"] = "your-api-key" | CODE |
| HIGH | docs/zh/python/index.md | 190 | os.environ["OPENAI_API_KEY"] = "your-api-key" | CODE |
| HIGH | docs/zh/resources/troubleshooting.md | 45 | he config init -k YOUR_API_KEY | CODE |
| HIGH | docs/zh/resources/troubleshooting.md | 50 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH⚡ | docs/zh/resources/faq.md | 62 | he config init -k YOUR_API_KEY | CODE |
| HIGH⚡ | docs/zh/resources/faq.md | 67 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH⚡ | docs/zh/resources/faq.md | 72 | OPENAI_API_KEY=your-api-key | CODE |
| HIGH | docs/zh/resources/faq.md | 201 | he config init -k YOUR_API_KEY | CODE |
| HIGH | docs/zh/cli/configuration.md | 196 | api_key = "sk-your-api-key" | CODE |
| HIGH | docs/zh/cli/configuration.md | 228 | api_key = "sk-your-api-key" | CODE |
| HIGH | docs/zh/cli/configuration.md | 280 | he config init -p bailian -k YOUR_API_KEY | CODE |
| HIGH | docs/zh/cli/commands/config.md | 49 | he config init -p openai -k sk-your-api-key-here | CODE |
| HIGH | docs/zh/cli/commands/config.md | 52 | he config init -p bailian -k sk-your-api-key-here | CODE |
| HIGH | docs/zh/cli/commands/config.md | 191 | api_key = "sk-your-api-key" | CODE |
| HIGH⚡ | docs/zh/cli/commands/config.md | 233 | he config init -k your-api-key | CODE |
| HIGH⚡ | docs/zh/cli/commands/config.md | 239 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH⚡ | docs/zh/cli/commands/config.md | 245 | he config init -k your-api-key | CODE |
| HIGH | docs/zh/getting-started/cli-quickstart.md | 215 | → 运行 `he config init -k YOUR_API_KEY` | CODE |
| HIGH | docs/zh/getting-started/python-quickstart.md | 38 | echo "OPENAI_API_KEY=your-api-key" > .env | CODE |
| HIGH | docs/en/python/quickstart.md | 24 | os.environ["OPENAI_API_KEY"] = "your-api-key" | CODE |
| HIGH | docs/en/python/index.md | 190 | os.environ["OPENAI_API_KEY"] = "your-api-key" | CODE |
| HIGH | docs/en/resources/troubleshooting.md | 47 | he config init -k YOUR_API_KEY | CODE |
| HIGH | docs/en/resources/troubleshooting.md | 52 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH⚡ | docs/en/resources/faq.md | 62 | he config init -k YOUR_API_KEY | CODE |
| HIGH⚡ | docs/en/resources/faq.md | 67 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH⚡ | docs/en/resources/faq.md | 72 | OPENAI_API_KEY=your-api-key | CODE |
| HIGH | docs/en/resources/faq.md | 201 | he config init -k YOUR_API_KEY | CODE |
| HIGH | docs/en/cli/configuration.md | 196 | api_key = "sk-your-api-key" | CODE |
| HIGH | docs/en/cli/configuration.md | 228 | api_key = "sk-your-api-key" | CODE |
| HIGH | docs/en/cli/configuration.md | 280 | he config init -p bailian -k YOUR_API_KEY | CODE |
| HIGH | docs/en/cli/commands/config.md | 49 | he config init -p openai -k sk-your-api-key-here | CODE |
| HIGH | docs/en/cli/commands/config.md | 52 | he config init -p bailian -k sk-your-api-key-here | CODE |
| HIGH | docs/en/cli/commands/config.md | 191 | api_key = "sk-your-api-key" | CODE |
| HIGH⚡ | docs/en/cli/commands/config.md | 233 | he config init -k your-api-key | CODE |
| HIGH⚡ | docs/en/cli/commands/config.md | 239 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH⚡ | docs/en/cli/commands/config.md | 245 | he config init -k your-api-key | CODE |
| HIGH | docs/en/getting-started/cli-quickstart.md | 220 | → Run `he config init -k YOUR_API_KEY` | CODE |
| HIGH⚡ | docs/en/getting-started/python-quickstart.md | 38 | echo "OPENAI_API_KEY=your-api-key" > .env | CODE |
| HIGH | hyperextract/cli/README.md | 36 | he config init --api-key YOUR_API_KEY | CODE |
| HIGH | hyperextract/cli/README.md | 69 | export OPENAI_API_KEY=your_api_key | CODE |
| HIGH | hyperextract/cli/README_ZH.md | 36 | he config init --api-key YOUR_API_KEY | CODE |
| HIGH | hyperextract/cli/README_ZH.md | 69 | export OPENAI_API_KEY=your_api_key | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs_hooks.py | 19 | def _suppress_autorefs_duplicates(): | CODE |
| LOW⚡ | tests/test_mcp_server.py | 55 | def test_list_templates_returns_json(): | CODE |
| LOW⚡ | tests/test_mcp_server.py | 89 | def test_search_returns_nodes_and_edges(monkeypatch): | CODE |
| LOW⚡ | tests/test_mcp_server.py | 98 | def test_search_without_index_is_handled(monkeypatch): | CODE |
| LOW⚡ | tests/test_mcp_server.py | 153 | def test_build_server_registers_tools(): | CODE |
| LOW⚡ | tests/template_engine/test_factory.py | 12 | def test_get_existing_template(self): | CODE |
| LOW⚡ | tests/template_engine/test_factory.py | 20 | def test_get_nonexistent_template(self): | CODE |
| LOW⚡ | tests/template_engine/test_factory.py | 30 | def test_create_with_language(self, llm_client, embedder): | CODE |
| LOW⚡ | tests/template_engine/test_factory.py | 42 | def test_create_without_source_raises(self, llm_client, embedder): | CODE |
| LOW⚡ | tests/template_engine/test_factory.py | 50 | def test_create_from_templatecfg_instance(self, llm_client, embedder): | CODE |
| LOW⚡ | tests/template_engine/test_factory.py | 60 | def test_create_method_template(self, llm_client, embedder): | CODE |
| LOW | tests/template_engine/test_parser_guideline.py | 12 | def test_labels_follow_language(): | CODE |
| LOW | tests/template_engine/test_parser_guideline.py | 23 | def test_unknown_language_falls_back_to_en(): | CODE |
| LOW⚡ | tests/template_engine/test_parser_loader.py | 17 | def test_missing_language_falls_back_to_en(self): | CODE |
| LOW⚡ | tests/template_engine/test_parser_loader.py | 20 | def test_missing_language_and_no_en_returns_empty(self): | CODE |
| LOW⚡ | tests/template_engine/test_parser_loader.py | 23 | def test_present_language_used(self): | CODE |
| LOW⚡ | tests/template_engine/test_parser_loader.py | 30 | def test_load_nonexistent_file_raises(self): | CODE |
| LOW⚡ | tests/template_engine/test_parser_loader.py | 35 | def test_load_existing_template(self): | CODE |
| LOW | tests/template_engine/test_parser_options.py | 17 | def test_every_valid_strategy_resolves(self, strategy): | CODE |
| LOW | tests/template_engine/test_parser_options.py | 28 | def test_multiword_llm_strategies_map_to_llm_member(self, strategy): | CODE |
| LOW | tests/template_engine/test_parser_output.py | 26 | def test_template_output_has_fields(self): | CODE |
| LOW | tests/template_engine/test_parser_output.py | 40 | def test_template_has_identifiers(self): | CODE |
| LOW⚡ | tests/template_engine/test_gallery.py | 11 | def test_get_existing_template_by_path(self): | CODE |
| LOW⚡ | tests/template_engine/test_gallery.py | 19 | def test_get_existing_template_by_name(self): | CODE |
| LOW⚡ | tests/template_engine/test_gallery.py | 25 | def test_get_nonexistent_template(self): | CODE |
| LOW⚡ | tests/template_engine/test_gallery.py | 31 | def test_get_template_preserves_config(self): | CODE |
| LOW | tests/template_engine/test_gallery.py | 51 | def test_filter_by_type_model(self): | CODE |
| LOW⚡ | tests/template_engine/test_gallery.py | 75 | def test_filter_by_type_graph(self): | CODE |
| LOW⚡ | tests/template_engine/test_gallery.py | 83 | def test_filter_by_language_en(self): | CODE |
| LOW⚡ | tests/template_engine/test_gallery.py | 89 | def test_filter_by_language_zh(self): | CODE |
| LOW | tests/template_engine/test_gallery.py | 101 | def test_filter_by_type_and_language(self): | CODE |
| LOW | tests/template_engine/test_gallery.py | 119 | def test_multiple_template_types(self): | CODE |
| LOW | tests/template_engine/test_gallery.py | 136 | def test_preserves_original_config(self): | CODE |
| LOW | tests/types/test_structured_output_method.py | 38 | def test_automodel_requests_function_calling(): | CODE |
| LOW | tests/types/test_structured_output_method.py | 45 | def test_autograph_two_stage_requests_function_calling(): | CODE |
| LOW | tests/types/test_graph_extraction.py | 45 | def test_node_schema_property(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_graph_extraction.py | 59 | def test_edge_schema_property(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_graph_extraction.py | 73 | def test_feed_text_adds_nodes_directly(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_graph_extraction.py | 93 | def test_feed_text_returns_self(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_graph_extraction.py | 128 | def test_two_stage_extraction_mode(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_graph_extraction.py | 175 | def test_metadata_initialized(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_model_basic.py | 16 | def test_init_and_empty_state(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_model_basic.py | 27 | def test_data_schema_property(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_model_basic.py | 37 | def test_parse_returns_new_instance(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_model_basic.py | 51 | def test_feed_text_updates_state(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_model_basic.py | 66 | def test_feed_text_returns_self(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_model_basic.py | 92 | def test_metadata_initialized(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_model_basic.py | 104 | def test_metadata_updated_on_feed(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_model_basic.py | 123 | def test_create_empty_instance(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 55 | def test_union_preserves_original(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 65 | def test_intersection_operator(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 76 | def test_intersection_named_method(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 86 | def test_intersection_no_common(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 106 | def test_difference_named_method(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 116 | def test_symmetric_difference_operator(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 128 | def test_symmetric_difference_named_method(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 137 | def test_symmetric_difference_with_no_overlap(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 172 | def test_equality_different_keys(self, llm_client, embedder): | CODE |
| LOW | tests/types/test_set_operations.py | 179 | def test_equality_different_lengths(self, llm_client, embedder): | CODE |
| LOW⚡ | tests/types/test_set_operations.py | 200 | def test_subset_not_reflexive_superset(self, llm_client, embedder): | CODE |
| 147 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/zh/resources/contributing.md | 57 | 处理输入文本并返回结构化数据。 Args: text: 要处理的输入文本 max_length: 最大处理长度 Returns: 包含处理后数据的字 | STRING |
| HIGH | docs/en/resources/contributing.md | 57 | Process input text and return structured data. Args: text: Input text to process max_length: Ma | STRING |
| HIGH | hyperextract/types/list.py | 391 | Support index access and slicing. Args: key: Integer index or slice object. Returns: | STRING |
| HIGH | hyperextract/types/list.py | 425 | Support index assignment. Args: index: Position to set (supports negative indexing). it | STRING |
| HIGH | hyperextract/types/list.py | 449 | Operator overload for '+' to combine knowledge instances. Supports multiple combination patterns: - Aut | STRING |
| HIGH | hyperextract/types/list.py | 514 | Support del operation for removing items by index. Args: index: Position to delete (supports negati | STRING |
| HIGH | hyperextract/types/list.py | 550 | Support 'in' operator for membership testing. Args: item: The item to check for membership. | STRING |
| HIGH | hyperextract/types/list.py | 600 | Append a single item to the end of the list. Args: item: The item to append. Raises: | STRING |
| HIGH | hyperextract/types/list.py | 621 | Extend the list by appending multiple items. Args: items: Iterable of items to append. Can be: | STRING |
| HIGH | hyperextract/types/list.py | 662 | Insert an item at a specific position. Args: index: Position to insert at (supports negative indexi | STRING |
| HIGH | hyperextract/types/list.py | 685 | Remove the first occurrence of an item from the list. Args: item: The item to remove. Rais | STRING |
| HIGH | hyperextract/types/list.py | 714 | Remove and return an item at the given position. Args: index: Position to pop (default: -1, last it | STRING |
| HIGH | hyperextract/types/list.py | 744 | Return the index of the first occurrence of item. Args: item: The item to find. start: | STRING |
| HIGH | hyperextract/types/list.py | 772 | Return the number of times item appears in the list. Args: item: The item to count. Return | STRING |
| HIGH | hyperextract/types/list.py | 833 | Sort the items in place. Args: key: Function to extract comparison key from each item. | STRING |
| HIGH | hyperextract/types/graph.py | 788 | Unified graph search interface. Retrieves nodes and edges semantically related to the query. Always ret | STRING |
| HIGH | hyperextract/types/model.py | 368 | Operator overload for '+' to combine AutoModel instances into AutoList. Supports multiple combination patterns: | STRING |
| HIGH | hyperextract/types/set.py | 563 | Removes and returns an arbitrary item from the set. Returns: The removed item. Raises: | STRING |
| HIGH | hyperextract/types/set.py | 797 | Equality comparison: set1 == set2. Two sets are equal if they have the same schema and key set. Note: D | STRING |
| HIGH | hyperextract/types/set.py | 828 | Subset comparison: set1 <= set2. Args: other: Another AutoSet instance. Returns: | STRING |
| HIGH | hyperextract/types/set.py | 854 | Proper subset comparison: set1 < set2. Args: other: Another AutoSet instance. Returns: | STRING |
| HIGH | hyperextract/types/set.py | 871 | Superset comparison: set1 >= set2. Args: other: Another AutoSet instance. Returns: | STRING |
| HIGH | hyperextract/types/set.py | 894 | Proper superset comparison: set1 > set2. Args: other: Another AutoSet instance. Returns: | STRING |
| HIGH | hyperextract/types/set.py | 911 | Test whether every key in the set is in other. Args: other: Another AutoSet instance. Retu | STRING |
| HIGH | hyperextract/types/set.py | 925 | Test whether every key in other is in the set. Args: other: Another AutoSet instance. Retu | STRING |
| HIGH | hyperextract/types/set.py | 939 | Test whether the set has no keys in common with other. Args: other: Another AutoSet instance. | STRING |
| HIGH | hyperextract/types/base.py | 673 | Operator overload for '+' to merge two knowledge instances. Creates a new knowledge instance by merging the dat | STRING |
| HIGH | hyperextract/types/hypergraph.py | 693 | Unified hypergraph search interface. Retrieves nodes and hyperedges semantically related to the query. | STRING |
| HIGH | hyperextract/utils/client.py | 313 | Create an LLM client from a specification string or dict. Args: spec: String shorthand (e.g. "bailian:qwen- | STRING |
| HIGH | hyperextract/utils/client.py | 374 | Create an Embedder client from a specification string or dict. Args: spec: String shorthand (e.g. "bailian: | STRING |
| HIGH | hyperextract/utils/client.py | 494 | Get OpenAI LLM client and Embedder from config. Backward-compatible: reads ~/.he/config.toml. Args: co | STRING |
| HIGH | hyperextract/utils/obsidian.py | 392 | Export graph-structured knowledge to an Obsidian vault. Each node is written as a Markdown note whose YAML front-ma | STRING |
| HIGH | hyperextract/utils/template_engine/factory.py | 45 | Create method template instance. Note: Method templates use English prompts only. Language is hardcoded | STRING |
| HIGH | hyperextract/utils/template_engine/factory.py | 388 | Create template instance based on configuration. Supports both knowledge templates and method templates: | STRING |
| HIGH | hyperextract/utils/template_engine/template.py | 47 | Create template instance. Args: source: Template path (e.g., "general/graph", "method/light_rag") o | STRING |
| HIGH | hyperextract/utils/template_engine/parsers/loader.py | 129 | Convert multilingual template config to single-language config. Args: config: Original multilingual config | STRING |
| HIGH | hyperextract/cli/utils.py | 37 | Validate Knowledge Abstract path. Args: ka_path: Knowledge Abstract directory path Returns: Pa | STRING |
| HIGH | hyperextract/cli/utils.py | 62 | Validate Knowledge Abstract path with data.json. Args: ka_path: Knowledge Abstract directory path Retu | STRING |
| HIGH | hyperextract/cli/utils.py | 86 | Validate Knowledge Abstract path with index. Args: ka_path: Knowledge Abstract directory path Returns: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/mocks.py | 3 | CODE | |
| LOW | tests/mocks.py | 5 | CODE | |
| LOW | tests/template_engine/test_factory.py | 4 | CODE | |
| LOW | tests/template_engine/test_parser_loader.py | 4 | CODE | |
| LOW | tests/template_engine/test_parser_loader.py | 5 | CODE | |
| LOW | tests/template_engine/test_parser_loader.py | 6 | CODE | |
| LOW | tests/template_engine/test_parser_output.py | 3 | CODE | |
| LOW | tests/template_engine/test_parser_output.py | 4 | CODE | |
| LOW | tests/template_engine/test_parser_output.py | 5 | CODE | |
| LOW | tests/template_engine/test_parser_output.py | 6 | CODE | |
| LOW | tests/template_engine/test_parser_output.py | 7 | CODE | |
| LOW | tests/template_engine/test_parser_output.py | 9 | CODE | |
| LOW | tests/types/test_graph_extraction.py | 3 | CODE | |
| LOW | tests/types/test_graph_extraction.py | 5 | CODE | |
| LOW | tests/types/test_graph_extraction.py | 5 | CODE | |
| LOW | tests/types/test_model_basic.py | 5 | CODE | |
| LOW | tests/types/test_model_basic.py | 6 | CODE | |
| LOW | tests/types/test_model_basic.py | 6 | CODE | |
| LOW | tests/types/test_model_basic.py | 7 | CODE | |
| LOW | tests/types/test_set_operations.py | 3 | CODE | |
| LOW | tests/types/test_set_operations.py | 4 | CODE | |
| LOW | tests/types/test_set_dedup.py | 6 | CODE | |
| LOW | tests/types/test_set_dedup.py | 11 | CODE | |
| LOW | tests/types/test_graph_dangling.py | 3 | CODE | |
| LOW | tests/types/test_graph_dangling.py | 5 | CODE | |
| LOW | tests/types/test_graph_dangling.py | 5 | CODE | |
| LOW | tests/types/test_list_slicing.py | 4 | CODE | |
| LOW | tests/types/test_graph_search.py | 3 | CODE | |
| LOW | tests/types/test_graph_search.py | 5 | CODE | |
| LOW | tests/types/test_graph_search.py | 5 | CODE | |
| LOW | tests/types/test_list_operations.py | 4 | CODE | |
| LOW | tests/types/test_list_operations.py | 8 | CODE | |
| LOW | tests/types/test_model_merge.py | 5 | CODE | |
| LOW | tests/types/test_extraction_logging.py | 6 | CODE | |
| LOW | tests/types/test_model_serialization.py | 10 | CODE | |
| LOW | tests/types/test_model_serialization.py | 10 | CODE | |
| LOW | tests/types/test_model_serialization.py | 11 | CODE | |
| LOW | tests/types/test_list_iteration.py | 6 | CODE | |
| LOW | tests/types/test_set_operators.py | 3 | CODE | |
| LOW | tests/types/test_set_operators.py | 4 | CODE | |
| LOW | tests/utils/test_client.py | 3 | CODE | |
| LOW | tests/utils/test_client.py | 5 | CODE | |
| LOW | tests/cli/test_verbose.py | 7 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 25 | CODE | |
| LOW | hyperextract/__init__.py | 38 | CODE | |
| LOW | hyperextract/__init__.py | 41 | CODE | |
| LOW | hyperextract/__init__.py | 41 | CODE | |
| LOW | hyperextract/__init__.py | 41 | CODE | |
| LOW | hyperextract/__init__.py | 41 | CODE | |
| LOW | hyperextract/__init__.py | 44 | CODE | |
| LOW | hyperextract/__init__.py | 44 | CODE | |
| LOW | hyperextract/__init__.py | 44 | CODE | |
| 67 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/en/python/guides/working-with-autotypes.md | 53 | # Step 1: Define custom schemas | COMMENT |
| LOW | docs/en/python/guides/working-with-autotypes.md | 67 | # Step 2: Configure LLM clients | COMMENT |
| LOW | docs/en/python/guides/working-with-autotypes.md | 73 | # Step 3: Create configured AutoGraph | COMMENT |
| LOW⚡ | docs/en/python/guides/working-with-autotypes.md | 87 | # Step 4: Extract | COMMENT |
| LOW⚡ | docs/en/python/guides/working-with-autotypes.md | 96 | # Step 5: Access results | STRING |
| LOW⚡ | docs/en/python/guides/working-with-autotypes.md | 106 | # Step 6: Use built-in features | STRING |
| LOW | docs/en/cli/workflow.md | 13 | ## Step 1: Prepare Your Document | COMMENT |
| LOW | docs/en/cli/workflow.md | 23 | ## Step 2: Extract Knowledge | COMMENT |
| LOW | docs/en/cli/workflow.md | 46 | ## Step 3: Explore the Knowledge | COMMENT |
| LOW | docs/en/cli/workflow.md | 83 | ## Step 4: Search for Information | COMMENT |
| LOW | docs/en/cli/workflow.md | 121 | ## Step 5: Chat with Your Knowledge | COMMENT |
| LOW | docs/en/cli/workflow.md | 162 | ## Step 6: Expand Your Knowledge Abstract | COMMENT |
| LOW | docs/en/cli/workflow.md | 184 | ## Step 7: Rebuild Index (If Needed) | COMMENT |
| LOW⚡ | docs/en/cli/workflow.md | 216 | # Step 1: Parse | COMMENT |
| LOW⚡ | docs/en/cli/workflow.md | 221 | # Step 2: Info | COMMENT |
| LOW⚡ | docs/en/cli/workflow.md | 226 | # Step 3: Search example | COMMENT |
| LOW⚡ | docs/en/cli/workflow.md | 231 | # Step 4: Open visualization | COMMENT |
| LOW | docs/en/getting-started/cli-quickstart.md | 14 | ## Step 1: Configure API Key | COMMENT |
| LOW | docs/en/getting-started/cli-quickstart.md | 48 | ## Step 2: Download Sample Document | COMMENT |
| LOW | docs/en/getting-started/cli-quickstart.md | 83 | ## Step 3: Extract Knowledge | COMMENT |
| LOW | docs/en/getting-started/cli-quickstart.md | 116 | ## Step 4: Visualize the Knowledge Graph | COMMENT |
| LOW | docs/en/getting-started/cli-quickstart.md | 130 | ## Step 5: Search Your Knowledge Abstract | COMMENT |
| LOW | docs/en/getting-started/cli-quickstart.md | 151 | ## Step 6: Chat with Your Knowledge | COMMENT |
| LOW | docs/en/getting-started/cli-quickstart.md | 167 | ## Step 7: Incrementally Add Knowledge | COMMENT |
| LOW | docs/en/getting-started/python-quickstart.md | 13 | ## Step 1: Set Up Your Project | COMMENT |
| LOW⚡ | docs/en/getting-started/python-quickstart.md | 31 | ## Step 2: Configure Your Model | COMMENT |
| LOW⚡ | docs/en/getting-started/python-quickstart.md | 47 | ## Step 3: Create Your First Extraction Script | COMMENT |
| LOW | docs/en/getting-started/python-quickstart.md | 108 | ## Step 4: Run the Script | STRING |
| LOW | docs/en/getting-started/python-quickstart.md | 129 | ## Step 5: Working with Results | STRING |
| LOW | docs/en/getting-started/python-quickstart.md | 153 | ## Step 6: Save and Load | STRING |
| LOW | docs/en/getting-started/python-quickstart.md | 168 | ## Step 7: Incremental Updates | STRING |
| LOW | docs/en/templates/examples/research-paper.md | 33 | ### Step 1: Extract Knowledge | COMMENT |
| LOW | docs/en/templates/examples/research-paper.md | 77 | ### Step 2: Explore Results | COMMENT |
| LOW | docs/en/templates/examples/research-paper.md | 113 | ### Step 3: Build Searchable Index | COMMENT |
| LOW | docs/en/templates/examples/research-paper.md | 125 | ### Step 4: Visualize | COMMENT |
| LOW | docs/en/templates/examples/research-paper.md | 139 | ### Step 5: Query | COMMENT |
| LOW | docs/en/templates/examples/financial-report.md | 62 | ### Step 1: Extract Earnings Data | COMMENT |
| LOW | docs/en/templates/examples/financial-report.md | 113 | ### Step 2: Extract Risk Factors | COMMENT |
| LOW | docs/en/templates/examples/financial-report.md | 129 | ### Step 3: Save and Compare | COMMENT |
| LOW | docs/en/templates/examples/legal-contract.md | 62 | ### Step 1: Extract Obligations | COMMENT |
| LOW | docs/en/templates/examples/legal-contract.md | 112 | ### Step 2: Extract Defined Terms | COMMENT |
| LOW | docs/en/templates/examples/legal-contract.md | 137 | ### Step 3: Build Contract Knowledge Base | COMMENT |
| LOW | docs/en/tutorials/research-assistant/step3-chat.md | 1 | # Step 3: Q&A System | COMMENT |
| LOW | docs/en/tutorials/research-assistant/step2-search.md | 1 | # Step 2: Semantic Search | COMMENT |
| LOW | docs/en/tutorials/research-assistant/step1-extract.md | 1 | # Step 1: Extract Knowledge | COMMENT |
| LOW | docs/en/tutorials/knowledge-base/step2-ingest.md | 1 | # Step 2: Ingest | COMMENT |
| LOW | docs/en/tutorials/knowledge-base/step1-setup.md | 1 | # Step 1: Setup | COMMENT |
| LOW | docs/en/tutorials/knowledge-base/step3-query.md | 1 | # Step 3: Query | COMMENT |
| LOW⚡ | hyperextract/types/graph.py | 919 | # Step 4: Combine context or use fallback | COMMENT |
| LOW⚡ | hyperextract/types/graph.py | 925 | # Step 5: Invoke LLM with structured context | COMMENT |
| LOW | hyperextract/types/graph.py | 895 | # Step 2: Retrieve and format nodes context | COMMENT |
| LOW | hyperextract/types/graph.py | 907 | # Step 3: Retrieve and format edges context | COMMENT |
| LOW | hyperextract/types/graph.py | 936 | # Step 6: Inject retrieved nodes and edges into response metadata | COMMENT |
| LOW⚡ | hyperextract/types/base.py | 470 | # Step 1: Retrieve relevant items from knowledge abstract | COMMENT |
| LOW⚡ | hyperextract/types/base.py | 473 | # Step 2: Format context from retrieved items | COMMENT |
| LOW | hyperextract/types/base.py | 494 | # Step 3: Create QA prompt template and invoke LLM | COMMENT |
| LOW⚡ | hyperextract/types/base.py | 506 | # Step 4: Inject retrieved items into response metadata | COMMENT |
| LOW⚡ | hyperextract/types/base.py | 511 | # Step 5: Return the AIMessage response | COMMENT |
| LOW⚡ | hyperextract/types/hypergraph.py | 807 | # Step 4: Combine context or use fallback | COMMENT |
| LOW⚡ | hyperextract/types/hypergraph.py | 813 | # Step 5: Invoke LLM with structured context | COMMENT |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/zh/tutorials/document-analysis/index.md | 184 | except Exception as e: | CODE |
| LOW | docs/zh/tutorials/knowledge-base/step2-ingest.md | 243 | except Exception as e: | CODE |
| LOW | docs/zh/tutorials/knowledge-base/step2-ingest.md | 260 | except Exception as e: | CODE |
| LOW | docs/en/tutorials/document-analysis/index.md | 184 | except Exception as e: | CODE |
| LOW | docs/en/tutorials/knowledge-base/step2-ingest.md | 243 | except Exception as e: | CODE |
| MEDIUM | docs/en/tutorials/knowledge-base/step2-ingest.md | 244 | print(f"Error processing {doc}: {e}") | CODE |
| LOW | docs/en/tutorials/knowledge-base/step2-ingest.md | 260 | except Exception as e: | CODE |
| LOW | hyperextract/types/list.py | 303 | except Exception as e: | CODE |
| LOW | hyperextract/types/graph.py | 956 | except Exception as e: | CODE |
| LOW | hyperextract/types/graph.py | 964 | except Exception as e: | CODE |
| LOW | hyperextract/types/graph.py | 976 | except Exception as e: | CODE |
| LOW | hyperextract/types/graph.py | 984 | except Exception as e: | CODE |
| LOW | hyperextract/types/model.py | 293 | except Exception as e: | CODE |
| LOW | hyperextract/types/base.py | 353 | except Exception: | CODE |
| LOW | hyperextract/types/base.py | 544 | except Exception as e: | CODE |
| LOW | hyperextract/types/base.py | 572 | except Exception as e: | CODE |
| LOW | hyperextract/types/hypergraph.py | 844 | except Exception as e: | CODE |
| LOW | hyperextract/types/hypergraph.py | 852 | except Exception as e: | CODE |
| LOW | hyperextract/types/hypergraph.py | 864 | except Exception as e: | CODE |
| LOW | hyperextract/types/hypergraph.py | 872 | except Exception as e: | CODE |
| LOW | hyperextract/methods/typical/itext2kg_star.py | 292 | except Exception as e: | STRING |
| LOW | hyperextract/methods/typical/kg_gen.py | 194 | except Exception as e: | STRING |
| LOW | hyperextract/methods/typical/atom.py | 572 | except Exception as e: | STRING |
| LOW⚡ | hyperextract/methods/rag/graph_rag.py | 524 | except Exception as e: | CODE |
| LOW | hyperextract/methods/rag/graph_rag.py | 467 | except Exception as e: | CODE |
| LOW | hyperextract/methods/rag/cog_rag.py | 521 | except Exception as e: | CODE |
| MEDIUM | hyperextract/methods/rag/cog_rag.py | 522 | print(f"Error visualizing {layer_name}: {e}") | CODE |
| LOW | hyperextract/utils/obsidian.py | 146 | except Exception as exc: # noqa: BLE001 - extractor is user-supplied | CODE |
| LOW | hyperextract/utils/obsidian.py | 203 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | hyperextract/utils/obsidian.py | 239 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | hyperextract/utils/template_engine/gallery.py | 109 | except Exception as e: | CODE |
| LOW | hyperextract/utils/template_engine/parsers/loader.py | 176 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 424 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 434 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 494 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 513 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 616 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 687 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 741 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 759 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 894 | except Exception as e: | CODE |
| LOW | hyperextract/cli/cli.py | 946 | except Exception as e: | CODE |
| LOW | examples/zh/methods/itext2kg_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/methods/itext2kg_star_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/methods/kg_gen_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/methods/hypergraph_rag_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/methods/light_rag_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/methods/graph_rag_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/methods/hyper_rag_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/methods/atom_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/methods/cog_rag_demo.py | 51 | except Exception as e: | CODE |
| LOW | examples/zh/autotypes/set_demo.py | 77 | except Exception as e: | CODE |
| LOW | examples/zh/autotypes/graph_demo.py | 79 | except Exception as e: | CODE |
| LOW | examples/zh/autotypes/list_demo.py | 71 | except Exception as e: | CODE |
| LOW | examples/zh/autotypes/model_demo.py | 83 | except Exception as e: | CODE |
| LOW | examples/zh/autotypes/spatial_graph_demo.py | 82 | except Exception as e: | CODE |
| LOW | examples/zh/autotypes/spatio_temporal_graph_demo.py | 92 | except Exception as e: | CODE |
| LOW | examples/zh/autotypes/hypergraph_demo.py | 82 | except Exception as e: | CODE |
| LOW | examples/zh/autotypes/temporal_graph_demo.py | 89 | except Exception as e: | CODE |
| LOW | examples/en/methods/itext2kg_demo.py | 51 | except Exception as e: | CODE |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | hyperextract/types/spatio_temporal_graph.py | 0 | you are a professional entity extraction specialist. your task is to extract all important entities (nodes) from the tex | STRING |
| HIGH | hyperextract/types/temporal_graph.py | 0 | you are a professional entity extraction specialist. your task is to extract all important entities (nodes) from the tex | STRING |
| HIGH | hyperextract/types/spatial_graph.py | 0 | you are a professional entity extraction specialist. your task is to extract all important entities (nodes) from the tex | STRING |
| HIGH | hyperextract/types/spatio_temporal_graph.py | 0 | you are a professional spatial knowledge graph extraction specialist. your task is to extract entities (nodes) and spati | STRING |
| HIGH | hyperextract/types/temporal_graph.py | 0 | you are a professional spatial knowledge graph extraction specialist. your task is to extract entities (nodes) and spati | STRING |
| HIGH | hyperextract/types/spatial_graph.py | 0 | you are a professional spatial knowledge graph extraction specialist. your task is to extract entities (nodes) and spati | STRING |
| HIGH | hyperextract/methods/typical/itext2kg.py | 0 | atom implementation using autograph as the core engine. this module provides a specialized implementation of the atom al | STRING |
| HIGH | hyperextract/methods/typical/itext2kg_star.py | 0 | atom implementation using autograph as the core engine. this module provides a specialized implementation of the atom al | STRING |
| HIGH | hyperextract/methods/typical/atom.py | 0 | atom implementation using autograph as the core engine. this module provides a specialized implementation of the atom al | STRING |
| HIGH | hyperextract/methods/rag/hyper_rag.py | 0 | represents an entity extracted from the source text. | STRING |
| HIGH | hyperextract/methods/rag/light_rag.py | 0 | represents an entity extracted from the source text. | STRING |
| HIGH | hyperextract/methods/rag/graph_rag.py | 0 | represents an entity extracted from the source text. | STRING |
| HIGH | hyperextract/methods/rag/cog_rag.py | 0 | represents an entity extracted from the source text. | STRING |
| HIGH | hyperextract/methods/rag/hyper_rag.py | 0 | you are an intelligent data merging assistant. you will receive a list of objects representing the same entity. your tas | STRING |
| HIGH | hyperextract/methods/rag/light_rag.py | 0 | you are an intelligent data merging assistant. you will receive a list of objects representing the same entity. your tas | STRING |
| HIGH | hyperextract/methods/rag/graph_rag.py | 0 | you are an intelligent data merging assistant. you will receive a list of objects representing the same entity. your tas | STRING |
| HIGH | hyperextract/methods/rag/cog_rag.py | 0 | you are an intelligent data merging assistant. you will receive a list of objects representing the same entity. your tas | STRING |
| HIGH | hyperextract/methods/rag/hyper_rag.py | 0 | initialize graph_rag engine. args: llm_client (basechatmodel): llm client for text generation. embedder (embeddings): em | STRING |
| HIGH | hyperextract/methods/rag/light_rag.py | 0 | initialize graph_rag engine. args: llm_client (basechatmodel): llm client for text generation. embedder (embeddings): em | STRING |
| HIGH | hyperextract/methods/rag/graph_rag.py | 0 | initialize graph_rag engine. args: llm_client (basechatmodel): llm client for text generation. embedder (embeddings): em | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/zh/python/core-concepts.md | 128 | #### 基于 RAG 的方法 | COMMENT |
| MEDIUM | docs/zh/python/api-reference/methods/rag.md | 1 | # 基于 RAG 的方法 | COMMENT |
| MEDIUM | docs/zh/python/guides/using-methods.md | 41 | ### 基于 RAG 的方法 | COMMENT |
| MEDIUM | docs/zh/python/guides/using-methods.md | 144 | ## RAG vs 典型方法比较 | COMMENT |
| MEDIUM | docs/zh/python/guides/using-methods.md | 219 | # - 最快的 RAG 方法 | COMMENT |
| MEDIUM | docs/zh/concepts/methods.md | 30 | ### 基于 RAG 的方法 | COMMENT |
| MEDIUM | docs/zh/concepts/methods.md | 132 | ## 基于 RAG 的方法 | COMMENT |
| MEDIUM | docs/zh/templates/examples/research-paper.md | 244 | # 选项 1:使用 RAG 方法 | COMMENT |
| MEDIUM | docs/en/python/core-concepts.md | 128 | #### RAG-Based Methods | COMMENT |
| MEDIUM | docs/en/python/api-reference/methods/rag.md | 1 | # RAG-Based Methods | COMMENT |
| MEDIUM | docs/en/python/guides/using-methods.md | 41 | ### RAG-Based Methods | COMMENT |
| MEDIUM | docs/en/python/guides/using-methods.md | 144 | ## RAG vs Typical Comparison | COMMENT |
| MEDIUM | docs/en/python/guides/using-methods.md | 219 | # - Fastest RAG method | COMMENT |
| MEDIUM | docs/en/cli/commands/config.md | 161 | # Use a larger OpenAI embedding model | COMMENT |
| MEDIUM | docs/en/concepts/methods.md | 30 | ### RAG-Based Methods | COMMENT |
| MEDIUM | docs/en/concepts/methods.md | 144 | ## RAG-Based Methods | COMMENT |
| MEDIUM | docs/en/templates/examples/research-paper.md | 244 | # Option 1: Use RAG method | COMMENT |
| MEDIUM | hyperextract/cli/README.md | 223 | # Use Light RAG method | COMMENT |
| MEDIUM | hyperextract/cli/README.md | 226 | # Use Hyper RAG method | COMMENT |
| MEDIUM | hyperextract/cli/README_ZH.md | 223 | # 使用 Light RAG 方法 | COMMENT |
| MEDIUM | hyperextract/cli/README_ZH.md | 226 | # 使用 Hyper RAG 方法 | COMMENT |
| MEDIUM | examples/README.md | 55 | │ ├── methods/ # RAG method demos | CODE |
| MEDIUM | examples/README.md | 86 | ├── methods/ # RAG method demos | CODE |
| MEDIUM | examples/README_ZH.md | 56 | │ ├── methods/ # RAG 方法演示 | CODE |
| MEDIUM | examples/README_ZH.md | 87 | ├── methods/ # RAG 方法演示 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hyperextract/__init__.py | 52 | __all__ = [ | CODE |
| LOW | hyperextract/types/list.py | 185 | def _set_data_state(self, data: AutoListSchema) -> None: | CODE |
| LOW | hyperextract/types/list.py | 193 | def _update_data_state(self, incoming_data: AutoListSchema) -> None: | CODE |
| LOW | hyperextract/types/graph.py | 418 | def _set_data_state(self, data: AutoGraphSchema[NodeSchema, EdgeSchema]) -> None: | CODE |
| LOW | hyperextract/types/__init__.py | 64 | __all__ = [ | CODE |
| LOW | hyperextract/types/model.py | 186 | def _set_data_state(self, data: T) -> None: | CODE |
| LOW | hyperextract/types/model.py | 194 | def _update_data_state(self, incoming_data: T) -> None: | CODE |
| LOW | hyperextract/types/set.py | 282 | def _set_data_state(self, data: AutoSetSchema[ItemSchema]) -> None: | CODE |
| LOW | hyperextract/types/set.py | 292 | def _update_data_state(self, incoming_data: AutoSetSchema[ItemSchema]) -> None: | CODE |
| LOW | hyperextract/types/base.py | 202 | def _set_data_state(self, data: T) -> None: | CODE |
| LOW | hyperextract/types/base.py | 218 | def _update_data_state(self, incoming_data: T) -> None: | CODE |
| LOW | hyperextract/types/hypergraph.py | 390 | def _set_data_state(self, data: AutoHypergraphSchema) -> None: | CODE |
| LOW | hyperextract/types/hypergraph.py | 402 | def _update_data_state(self, incoming_data: AutoHypergraphSchema) -> None: | CODE |
| LOW | hyperextract/methods/__init__.py | 20 | __all__ = [ | CODE |
| LOW | hyperextract/methods/typical/__init__.py | 12 | __all__ = [ | CODE |
| LOW | hyperextract/methods/rag/__init__.py | 13 | __all__ = [ | CODE |
| LOW | hyperextract/utils/logging.py | 85 | def set_log_level(level: str) -> None: | CODE |
| LOW | hyperextract/utils/logging.py | 95 | __all__ = ["get_logger", "configure_logging", "set_log_level"] | CODE |
| LOW | hyperextract/utils/client.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | hyperextract/utils/__init__.py | 7 | __all__ = [ | CODE |
| LOW | hyperextract/utils/template_engine/__init__.py | 25 | __all__ = [ | CODE |
| LOW | hyperextract/utils/template_engine/parsers/options.py | 142 | __all__ = [ | CODE |
| LOW | …erextract/utils/template_engine/parsers/identifiers.py | 131 | __all__ = [ | CODE |
| LOW | hyperextract/utils/template_engine/parsers/__init__.py | 15 | __all__ = [ | CODE |
| LOW | hyperextract/utils/template_engine/parsers/display.py | 35 | __all__ = [ | CODE |
| LOW | hyperextract/utils/template_engine/parsers/loader.py | 184 | __all__ = [ | CODE |
| LOW | hyperextract/utils/template_engine/parsers/guideline.py | 105 | __all__ = [ | CODE |
| LOW | hyperextract/utils/template_engine/parsers/output.py | 92 | __all__ = [ | CODE |
| LOW | …ract/utils/template_engine/parsers/schemas/__init__.py | 21 | __all__ = [ | CODE |
| LOW | hyperextract/cli/__init__.py | 10 | __all__ = ["app"] | CODE |
| LOW | hyperextract/cli/commands/__init__.py | 6 | __all__ = ["list_app", "config_app"] | CODE |
| LOW | hyperextract/templates/__init__.py | 19 | __all__ = [] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | hyperextract/types/graph.py | 919 | # Step 4: Combine context or use fallback | COMMENT |
| LOW⚡ | hyperextract/types/graph.py | 925 | # Step 5: Invoke LLM with structured context | COMMENT |
| LOW | hyperextract/types/graph.py | 895 | # Step 2: Retrieve and format nodes context | COMMENT |
| LOW | hyperextract/types/graph.py | 907 | # Step 3: Retrieve and format edges context | COMMENT |
| LOW | hyperextract/types/graph.py | 936 | # Step 6: Inject retrieved nodes and edges into response metadata | COMMENT |
| LOW⚡ | hyperextract/types/base.py | 470 | # Step 1: Retrieve relevant items from knowledge abstract | COMMENT |
| LOW⚡ | hyperextract/types/base.py | 473 | # Step 2: Format context from retrieved items | COMMENT |
| LOW | hyperextract/types/base.py | 494 | # Step 3: Create QA prompt template and invoke LLM | COMMENT |
| LOW⚡ | hyperextract/types/base.py | 506 | # Step 4: Inject retrieved items into response metadata | COMMENT |
| LOW⚡ | hyperextract/types/base.py | 511 | # Step 5: Return the AIMessage response | COMMENT |
| LOW⚡ | hyperextract/types/hypergraph.py | 807 | # Step 4: Combine context or use fallback | COMMENT |
| LOW⚡ | hyperextract/types/hypergraph.py | 813 | # Step 5: Invoke LLM with structured context | COMMENT |
| LOW | hyperextract/types/hypergraph.py | 783 | # Step 2: Retrieve and format nodes context | COMMENT |
| LOW | hyperextract/types/hypergraph.py | 795 | # Step 3: Retrieve and format edges context | COMMENT |
| LOW | hyperextract/types/hypergraph.py | 824 | # Step 6: Inject retrieved nodes and edges into response metadata | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | hyperextract/types/graph.py | 274 | # Initialize OMem instances (Before super().__init__) | COMMENT |
| MEDIUM | hyperextract/types/set.py | 181 | # Initialize OMem instance BEFORE calling super().__init__ so _init_internal_state can use it | COMMENT |
| MEDIUM | hyperextract/types/base.py | 714 | # Create a new instance with the same configuration | COMMENT |
| MEDIUM | hyperextract/types/hypergraph.py | 279 | # Initialize OMem instances | COMMENT |
| MEDIUM | hyperextract/methods/rag/graph_rag.py | 417 | # Create a subgraph without isolated nodes for Leiden to avoid warnings | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/zh/templates/finance_template.py | 21 | # // test for 重大事件时间线 | COMMENT |
| LOW | examples/zh/templates/general_template.py | 21 | # // test for 基础知识图谱 | COMMENT |
| LOW | examples/zh/templates/medicine_template.py | 21 | # // test for 解剖结构图 | COMMENT |
| LOW | examples/zh/templates/tcm_template.py | 21 | # // test for 方剂组成图 | COMMENT |
| LOW | examples/zh/templates/industry_template.py | 21 | # // test for 设备拓扑图 | COMMENT |
| LOW | examples/zh/templates/legal_template.py | 21 | # // test for 案例引用图 | COMMENT |
| LOW | examples/en/templates/finance_template.py | 21 | # // test for Event Timeline | COMMENT |
| LOW | examples/en/templates/general_template.py | 21 | # // test for Base Knowledge Graph | COMMENT |
| LOW | examples/en/templates/medicine_template.py | 21 | # // test for Anatomy Structure Graph | COMMENT |
| LOW | examples/en/templates/tcm_template.py | 21 | # // test for Formula Composition Graph | COMMENT |
| LOW | examples/en/templates/industry_template.py | 21 | # // test for Equipment Topology | COMMENT |
| LOW | examples/en/templates/legal_template.py | 21 | # // test for Case Citation Graph | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/mocks.py | 101 | CODE | |
| LOW | hyperextract/types/base.py | 336 | CODE | |
| LOW | hyperextract/types/base.py | 456 | CODE | |
| LOW | hyperextract/methods/rag/graph_rag.py | 368 | CODE | |
| LOW | hyperextract/utils/template_engine/gallery.py | 54 | CODE | |
| LOW | hyperextract/cli/cli.py | 161 | CODE | |
| LOW | hyperextract/cli/cli.py | 580 | CODE | |
| LOW | hyperextract/cli/cli.py | 692 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hyperextract/types/graph.py | 651 | # Check if both endpoints exist | COMMENT |
| LOW | hyperextract/types/model.py | 162 | # Check if the value is not considered empty | COMMENT |
| LOW | hyperextract/types/model.py | 249 | # Check if there's data to index | COMMENT |
| LOW | hyperextract/types/model.py | 277 | # Check if there's data to search | COMMENT |
| LOW | hyperextract/methods/typical/atom.py | 522 | # Set t_obs to extraction timestamp | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hyperextract/types/spatio_temporal_graph.py | 144 | CODE | |
| LOW | hyperextract/types/temporal_graph.py | 144 | CODE | |
| LOW | hyperextract/types/graph.py | 153 | CODE | |
| LOW | hyperextract/types/spatial_graph.py | 129 | CODE | |
| LOW | hyperextract/types/set.py | 102 | CODE | |
| LOW | hyperextract/types/hypergraph.py | 151 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hyperextract/methods/typical/atom.py | 260 | **Input**: "John Doe's marriage is happening on 26-02-2026." | CODE |
| LOW | hyperextract/methods/typical/atom.py | 262 | - (John Doe, has_status, Married, t_start=["2026-02-26"], t_end=[], atomic_facts=["John Doe's marriage is happening on 2 | CODE |