Repository Analysis

getzep/graphiti

Build Real-Time Knowledge Graphs for AI Agents

47.2 Strong AI signal View on GitHub
47.2
Adjusted Score
47.2
Raw Score
100%
Time Factor
2026-05-21
Last Push
26,746
Stars
Python
Language
72,387
Lines of Code
313
Files
1431
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 1HIGH 440MEDIUM 109LOW 881

Pattern Findings

1431 matches across 16 categories. Click a row to expand file-level details.

Cross-File Repetition425 hits · 2125 pts
SeverityFileLineSnippet
HIGHtests/test_graphiti_mock.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/test_add_triplet.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/test_edge_int.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/helpers_test.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/test_entity_exclusion_int.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/test_graphiti_int.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/test_text_utils.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/test_node_int.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/evals/eval_e2e_graph_building.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/evals/utils.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/llm_client/test_anthropic_client_int.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/llm_client/test_anthropic_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/llm_client/test_errors.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/llm_client/test_token_tracker.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/llm_client/test_gemini_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/llm_client/test_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/llm_client/test_cache.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/driver/test_falkordb_driver.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/embedder/test_voyage.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/embedder/test_openai.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/embedder/embedder_fixtures.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/embedder/test_gemini.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/utils/test_content_chunking.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/utils/maintenance/test_entity_extraction.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/cross_encoder/test_bge_reranker_client_int.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHtests/cross_encoder/test_gemini_reranker_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHexamples/ecommerce/runner.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHexamples/podcast/podcast_runner.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHexamples/wizard_of_oz/runner.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/graphiti_types.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/edges.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/errors.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/nodes.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/graphiti.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/helpers.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/tracer.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/decorators.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/config.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/cache.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/__init__.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/token_tracker.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/azure_openai_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/gliner2_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/groq_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/utils.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/openai_generic_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/errors.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/openai_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/anthropic_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/openai_base_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/llm_client/gemini_client.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/driver/neptune_driver.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/driver/neo4j_driver.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/driver/falkordb_driver.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/driver/__init__.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/driver/query_executor.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/driver/record_parsers.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/driver/driver.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
HIGHgraphiti_core/driver/kuzu_driver.py0copyright 2024, zep software, inc. licensed under the apache license, version 2.0 (the "license"); you may not use this
365 more matches not shown…
Hyper-Verbose Identifiers547 hits · 518 pts
SeverityFileLineSnippet
LOWtests/test_graphiti_mock.py99def mock_cross_encoder_client():
LOWtests/test_graphiti_mock.py454async def test_graphiti_retrieve_episodes(
LOWtests/test_graphiti_mock.py529async def test_filter_existing_duplicate_of_edges(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py593async def test_determine_entity_community(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py753async def test_get_community_clusters(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py879async def test_get_communities_by_nodes(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py918async def test_edge_fulltext_search(
LOWtests/test_graphiti_mock.py1019async def test_edge_similarity_search(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py1307async def test_node_fulltext_search(
LOWtests/test_graphiti_mock.py1356async def test_node_similarity_search(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py1516async def test_episode_fulltext_search(
LOWtests/test_graphiti_mock.py1567async def test_community_fulltext_search(
LOWtests/test_graphiti_mock.py1610async def test_community_similarity_search(
LOWtests/test_graphiti_mock.py1717async def test_get_relevant_edges_and_invalidation_candidates(
LOWtests/test_graphiti_mock.py1871async def test_node_distance_reranker(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py1932async def test_episode_mentions_reranker(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py1989async def test_get_embeddings_for_edges(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py2030async def test_get_embeddings_for_nodes(graph_driver, mock_embedder):
LOWtests/test_graphiti_mock.py2051async def test_get_embeddings_for_communities(graph_driver, mock_embedder):
LOWtests/test_add_triplet.py55def mock_cross_encoder_client():
LOWtests/test_add_triplet.py66async def test_add_triplet_merges_attributes(
LOWtests/test_add_triplet.py145async def test_add_triplet_updates_summary(
LOWtests/test_add_triplet.py216async def test_add_triplet_updates_labels(
LOWtests/test_add_triplet.py288async def test_add_triplet_with_new_nodes_no_uuid(
LOWtests/test_add_triplet.py353async def test_add_triplet_preserves_existing_attributes(
LOWtests/test_add_triplet.py433async def test_add_triplet_empty_attributes_preserved(
LOWtests/test_add_triplet.py508async def test_add_triplet_invalid_source_uuid(
LOWtests/test_add_triplet.py561async def test_add_triplet_invalid_target_uuid(
LOWtests/test_add_triplet.py627async def test_add_triplet_invalid_both_uuids(
LOWtests/test_add_triplet.py683async def test_add_triplet_edge_uuid_with_different_nodes_creates_new_edge(
LOWtests/test_add_triplet.py780async def test_add_triplet_edge_uuid_with_same_nodes_updates_edge(
LOWtests/test_node_label_security.py13def test_entity_node_rejects_unsafe_labels():
LOWtests/test_node_label_security.py22def test_entity_node_assignment_rejects_unsafe_labels():
LOWtests/test_node_label_security.py29def test_entity_node_save_query_rejects_unsafe_labels_when_validation_is_bypassed():
LOWtests/test_node_label_security.py39def test_entity_node_save_bulk_query_rejects_unsafe_labels_when_validation_is_bypassed():
LOWtests/helpers_test.py246async def assert_episodic_node_equals(retrieved: EpisodicNode, sample: EpisodicNode):
LOWtests/helpers_test.py258async def assert_entity_node_equals(
LOWtests/helpers_test.py274async def assert_community_node_equals(
LOWtests/helpers_test.py288async def assert_episodic_edge_equals(retrieved: EpisodicEdge, sample: EpisodicEdge):
LOWtests/helpers_test.py296async def assert_entity_edge_equals(
LOWtests/test_entity_exclusion_int.py64async def test_exclude_default_entity_type(driver):
LOWtests/test_entity_exclusion_int.py121async def test_exclude_specific_custom_types(driver):
LOWtests/test_entity_exclusion_int.py279def test_validation_valid_excluded_types():
LOWtests/test_entity_exclusion_int.py294def test_validation_invalid_excluded_types():
LOWtests/test_entity_exclusion_int.py314async def test_excluded_types_parameter_validation_in_add_episode(driver):
LOWtests/test_text_utils.py20def test_truncate_at_sentence_short_text():
LOWtests/test_text_utils.py27def test_truncate_at_sentence_empty():
LOWtests/test_text_utils.py33def test_truncate_at_sentence_exact_length():
LOWtests/test_text_utils.py40def test_truncate_at_sentence_with_period():
LOWtests/test_text_utils.py48def test_truncate_at_sentence_with_question():
LOWtests/test_text_utils.py56def test_truncate_at_sentence_with_exclamation():
LOWtests/test_text_utils.py64def test_truncate_at_sentence_no_boundary():
LOWtests/test_text_utils.py72def test_truncate_at_sentence_multiple_periods():
LOWtests/test_text_utils.py80def test_truncate_at_sentence_strips_trailing_whitespace():
LOWtests/test_text_utils.py88def test_max_summary_chars_constant():
LOWtests/test_text_utils.py93def test_truncate_at_sentence_realistic_summary():
LOWtests/llm_client/test_anthropic_client_int.py43async def test_generate_simple_response():
LOWtests/llm_client/test_anthropic_client_int.py69async def test_extract_json_from_text():
LOWtests/llm_client/test_azure_openai_client.py60async def test_structured_completion_strips_reasoning_for_unsupported_models():
LOWtests/llm_client/test_azure_openai_client.py94async def test_reasoning_fields_forwarded_for_supported_models():
487 more matches not shown…
Decorative Section Separators71 hits · 226 pts
SeverityFileLineSnippet
MEDIUM.github/workflows/claude-code-review-manual.yml84 # ============================================================
MEDIUM.github/workflows/claude-code-review-manual.yml86 # ============================================================
MEDIUM.github/workflows/claude-code-review-manual.yml96 # ============================================================
MEDIUM.github/workflows/claude-code-review.yml78 # ============================================================
MEDIUM.github/workflows/claude-code-review.yml80 # ============================================================
MEDIUM.github/workflows/claude-code-review.yml90 # ============================================================
MEDIUM.github/workflows/pr-triage.yml21 # ──────────────────────────────────────────────
MEDIUM.github/workflows/pr-triage.yml24 # ──────────────────────────────────────────────
MEDIUM.github/workflows/pr-triage.yml41 # ──────────────────────────────────────────────
MEDIUM.github/workflows/pr-triage.yml45 # ──────────────────────────────────────────────
MEDIUM.github/workflows/pr-triage.yml161 # ============================================================
MEDIUM.github/workflows/pr-triage.yml163 # ============================================================
MEDIUM.github/workflows/pr-triage.yml173 # ============================================================
MEDIUM.github/workflows/pr-triage.yml206 # ──────────────────────────────────────────────
MEDIUM.github/workflows/pr-triage.yml208 # ──────────────────────────────────────────────
MEDIUM.github/workflows/pr-triage.yml297 # ============================================================
MEDIUM.github/workflows/pr-triage.yml299 # ============================================================
MEDIUM.github/workflows/pr-triage.yml309 # ============================================================
MEDIUMgraphiti_core/llm_client/gliner2_client.py118 # ── Message parsing helpers ──────────────────────────────────────
MEDIUMgraphiti_core/llm_client/gliner2_client.py174 # ── Extraction handlers ──────────────────────────────────────────
MEDIUMgraphiti_core/llm_client/gliner2_client.py215 # ── Core dispatch ────────────────────────────────────────────────
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py102 # --------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py104 # --------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py175 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py177 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py269 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py271 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py335 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py337 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py358 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py360 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py464 # -----------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py466 # -----------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py485 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py487 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py505 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py507 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py530 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py532 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py550 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py552 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py575 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py577 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py606 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py608 # ---------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py631 # ----------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py633 # ----------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py662 # ----------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py664 # ----------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py805 # -----------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py807 # -----------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py36 # -----------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py38 # -----------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py77 # -----------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py79 # -----------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py123 # --------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py125 # --------------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py228 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py230 # -----------------------
MEDIUM…phiti_core/driver/graph_operations/graph_operations.py294 # -----------------------
11 more matches not shown…
Excessive Try-Catch Wrapping108 hits · 108 pts
SeverityFileLineSnippet
LOWtests/test_entity_exclusion_int.py349 except Exception as e:
LOWtests/llm_client/test_anthropic_client_int.py63 except Exception as e:
LOWtests/driver/test_falkordb_driver.py391 except Exception as e:
LOWgraphiti_core/graphiti.py267 except Exception:
LOWgraphiti_core/graphiti.py1225 except Exception as e:
LOWgraphiti_core/graphiti.py1484 except Exception as e:
LOWgraphiti_core/tracer.py104 except Exception:
LOWgraphiti_core/tracer.py116 except Exception:
LOWgraphiti_core/tracer.py154 except Exception:
LOWgraphiti_core/llm_client/client.py253 except Exception as e:
LOWgraphiti_core/llm_client/gliner2_client.py244 except Exception as e:
LOWgraphiti_core/llm_client/gliner2_client.py318 except Exception as e:
LOWgraphiti_core/llm_client/groq_client.py83 except Exception as e:
LOWgraphiti_core/llm_client/openai_generic_client.py134 except Exception as e:
LOWgraphiti_core/llm_client/openai_generic_client.py188 except Exception as e:
LOWgraphiti_core/llm_client/anthropic_client.py341 except Exception as e:
LOWgraphiti_core/llm_client/anthropic_client.py419 except Exception as e:
LOWgraphiti_core/llm_client/openai_base_client.py200 except Exception as e:
LOWgraphiti_core/llm_client/openai_base_client.py275 except Exception as e:
LOWgraphiti_core/llm_client/gemini_client.py225 except Exception:
LOWgraphiti_core/llm_client/gemini_client.py232 except Exception:
LOWgraphiti_core/llm_client/gemini_client.py333 except Exception as e:
LOWgraphiti_core/llm_client/gemini_client.py349 except Exception as e:
LOWgraphiti_core/llm_client/gemini_client.py437 except Exception as e:
LOWgraphiti_core/driver/neptune_driver.py296 except Exception as e:
LOWgraphiti_core/driver/neo4j_driver.py173 except Exception as e:
LOWgraphiti_core/driver/neo4j_driver.py223 except Exception as e:
LOWgraphiti_core/driver/falkordb_driver.py231 except Exception as e:
LOWgraphiti_core/driver/falkordb_driver.py327 except Exception as e:
LOWgraphiti_core/driver/kuzu_driver.py221 except Exception as e:
LOWgraphiti_core/embedder/gemini.py155 except Exception as e:
LOWgraphiti_core/embedder/gemini.py179 except Exception as individual_error:
LOWgraphiti_core/embedder/azure_openai.py57 except Exception as e:
LOWgraphiti_core/embedder/azure_openai.py69 except Exception as e:
LOWgraphiti_core/utils/maintenance/combined_extraction.py273 except Exception:
LOWgraphiti_core/utils/maintenance/edge_operations.py619 except Exception:
LOWgraphiti_core/search/search.py92 except Exception as e:
LOWgraphiti_core/cross_encoder/gemini_reranker_client.py149 except Exception as e:
LOWgraphiti_core/cross_encoder/openai_reranker_client.py121 except Exception as e:
LOWgraphiti_core/telemetry/telemetry.py50 except Exception:
LOWgraphiti_core/telemetry/telemetry.py61 except Exception:
LOWgraphiti_core/telemetry/telemetry.py72 except Exception:
LOWgraphiti_core/telemetry/telemetry.py87 except Exception:
LOWgraphiti_core/telemetry/telemetry.py115 except Exception:
LOWmcp_server/tests/test_stdio_simple.py77 except Exception as e:
LOWmcp_server/tests/run_tests.py79 except Exception:
LOWmcp_server/tests/run_tests.py91 except Exception:
LOWmcp_server/tests/test_configuration.py66 except Exception as e:
LOWmcp_server/tests/test_configuration.py84 except Exception as e:
LOWmcp_server/tests/test_configuration.py104 except Exception as e:
LOWmcp_server/tests/test_configuration.py140 except Exception as e:
LOWmcp_server/tests/test_configuration.py142 except Exception as e:
LOWmcp_server/tests/test_configuration.py201 except Exception as e:
LOWmcp_server/tests/test_http_integration.py60 except Exception as e:
LOWmcp_server/tests/test_http_integration.py87 except Exception as e:
LOWmcp_server/tests/test_http_integration.py106 except Exception: # noqa: E722
LOWmcp_server/tests/test_http_integration.py111 except Exception as e:
LOWmcp_server/tests/test_http_integration.py127 except Exception: # noqa: E722
LOWmcp_server/tests/test_http_integration.py132 except Exception as e:
LOWmcp_server/tests/test_http_integration.py149 except Exception as e:
48 more matches not shown…
Self-Referential Comments33 hits · 103 pts
SeverityFileLineSnippet
MEDIUMtests/test_add_triplet.py81 # Create an existing node with some attributes
MEDIUMtests/test_add_triplet.py93 # Create a user-provided node with additional attributes
MEDIUMtests/test_add_triplet.py160 # Create an existing node with a summary
MEDIUMtests/test_add_triplet.py231 # Create an existing node with labels
MEDIUMtests/test_add_triplet.py368 # Create an existing node with multiple attributes
MEDIUMtests/test_add_triplet.py448 # Create an existing node with attributes
MEDIUMtests/test_add_triplet.py525 # Create a node with a UUID that doesn't exist in the database
MEDIUMtests/test_add_triplet.py578 # Create an existing source node
MEDIUMtests/test_add_triplet.py590 # Create a target node with a UUID that doesn't exist in the database
MEDIUMtests/test_add_triplet.py721 # Create a third node: Charlie
MEDIUMtests/test_add_triplet.py733 # Create an existing edge between Alice and Bob
MEDIUMtests/test_add_triplet.py818 # Create an existing edge between Alice and Bob
MEDIUMtests/test_edge_int.py32 # Create a logger
MEDIUMtests/test_graphiti_int.py33 # Create a logger
MEDIUMtests/evals/utils.py22 # Create a logger
MEDIUMtests/llm_client/test_anthropic_client.py162 # Create a custom RateLimitError from Anthropic
MEDIUMtests/llm_client/test_anthropic_client.py182 # Create a custom APIError that matches what we need
MEDIUMtests/utils/test_content_chunking.py176 # Create a single long paragraph with multiple sentences
MEDIUMtests/utils/maintenance/test_entity_extraction.py413 # Create a node with a very long summary (over MAX_SUMMARY_CHARS * 4)
MEDIUMexamples/ecommerce/runner.py40 # Create a logger
MEDIUMexamples/gliner2/gliner2_neo4j.py123 # Create the Gemini client for reasoning tasks
MEDIUMexamples/gliner2/gliner2_neo4j.py132 # Create the GLiNER2 hybrid client
MEDIUMexamples/gliner2/gliner2_neo4j.py139 # Create the Gemini embedder
MEDIUMexamples/podcast/podcast_runner.py41 # Create a logger
MEDIUMexamples/wizard_of_oz/runner.py39 # Create a logger
MEDIUMgraphiti_core/llm_client/client.py150 # Create a unique cache key based on the messages and model
MEDIUMgraphiti_core/llm_client/anthropic_client.py195 # Create a generic JSON output tool
MEDIUMgraphiti_core/llm_client/anthropic_client.py286 # Create the appropriate tool based on whether response_model is provided
MEDIUMgraphiti_core/driver/neptune_driver.py264 # Create a new list expression with datetime() wrapped around each element
MEDIUMgraphiti_core/driver/falkordb_driver.py317 # Create a new instance of FalkorDriver with the same connection but a different database
MEDIUMgraphiti_core/driver/kuzu_driver.py248 # This method is required by the abstract base class but is a no-op for Kuzu
MEDIUMmcp_server/tests/test_async_operations.py247 # Create a very large episode that might time out
MEDIUMmcp_server/src/graphiti_mcp_server.py198 # Create a dynamic Pydantic model for each entity type
Unused Imports100 hits · 100 pts
SeverityFileLineSnippet
LOWconftest.py8
LOWconftest.py8
LOWserver/graph_service/dto/__init__.py1
LOWserver/graph_service/dto/__init__.py1
LOWserver/graph_service/dto/__init__.py2
LOWserver/graph_service/dto/__init__.py2
LOWserver/graph_service/dto/__init__.py3
LOWserver/graph_service/dto/__init__.py3
LOWserver/graph_service/dto/__init__.py3
LOWserver/graph_service/dto/__init__.py3
LOWserver/graph_service/dto/__init__.py3
LOWgraphiti_core/__init__.py1
LOWgraphiti_core/tracer.py23
LOWgraphiti_core/tracer.py26
LOWgraphiti_core/llm_client/__init__.py17
LOWgraphiti_core/llm_client/__init__.py18
LOWgraphiti_core/llm_client/__init__.py19
LOWgraphiti_core/llm_client/__init__.py20
LOWgraphiti_core/llm_client/__init__.py21
LOWgraphiti_core/llm_client/__init__.py21
LOWgraphiti_core/driver/__init__.py17
LOWgraphiti_core/driver/driver.py17
LOWgraphiti_core/driver/neo4j/operations/__init__.py17
LOWgraphiti_core/driver/neo4j/operations/__init__.py18
LOWgraphiti_core/driver/neo4j/operations/__init__.py19
LOWgraphiti_core/driver/neo4j/operations/__init__.py20
LOWgraphiti_core/driver/neo4j/operations/__init__.py21
LOWgraphiti_core/driver/neo4j/operations/__init__.py22
LOWgraphiti_core/driver/neo4j/operations/__init__.py23
LOWgraphiti_core/driver/neo4j/operations/__init__.py24
LOWgraphiti_core/driver/neo4j/operations/__init__.py27
LOWgraphiti_core/driver/neo4j/operations/__init__.py30
LOWgraphiti_core/driver/neo4j/operations/__init__.py31
LOWgraphiti_core/driver/falkordb/operations/__init__.py17
LOWgraphiti_core/driver/falkordb/operations/__init__.py20
LOWgraphiti_core/driver/falkordb/operations/__init__.py23
LOWgraphiti_core/driver/falkordb/operations/__init__.py24
LOWgraphiti_core/driver/falkordb/operations/__init__.py25
LOWgraphiti_core/driver/falkordb/operations/__init__.py26
LOWgraphiti_core/driver/falkordb/operations/__init__.py27
LOWgraphiti_core/driver/falkordb/operations/__init__.py28
LOWgraphiti_core/driver/falkordb/operations/__init__.py31
LOWgraphiti_core/driver/falkordb/operations/__init__.py34
LOWgraphiti_core/driver/falkordb/operations/__init__.py35
LOWgraphiti_core/driver/kuzu/operations/__init__.py17
LOWgraphiti_core/driver/kuzu/operations/__init__.py18
LOWgraphiti_core/driver/kuzu/operations/__init__.py19
LOWgraphiti_core/driver/kuzu/operations/__init__.py20
LOWgraphiti_core/driver/kuzu/operations/__init__.py21
LOWgraphiti_core/driver/kuzu/operations/__init__.py22
LOWgraphiti_core/driver/kuzu/operations/__init__.py23
LOWgraphiti_core/driver/kuzu/operations/__init__.py24
LOWgraphiti_core/driver/kuzu/operations/__init__.py25
LOWgraphiti_core/driver/kuzu/operations/__init__.py28
LOWgraphiti_core/driver/kuzu/operations/__init__.py29
LOWgraphiti_core/driver/neptune/operations/__init__.py17
LOWgraphiti_core/driver/neptune/operations/__init__.py20
LOWgraphiti_core/driver/neptune/operations/__init__.py23
LOWgraphiti_core/driver/neptune/operations/__init__.py24
LOWgraphiti_core/driver/neptune/operations/__init__.py25
40 more matches not shown…
Deep Nesting63 hits · 61 pts
SeverityFileLineSnippet
LOWtests/helpers_test.py87
LOWtests/utils/test_content_chunking.py664
LOWtests/utils/test_content_chunking.py757
LOWexamples/quickstart/quickstart_neptune.py61
LOWexamples/quickstart/quickstart_neo4j.py57
LOWexamples/quickstart/quickstart_falkordb.py65
LOWexamples/azure-openai/azure_openai_neo4j.py68
LOWexamples/gliner2/gliner2_neo4j.py113
LOWexamples/podcast/transcript_parser.py38
LOWgraphiti_core/graphiti.py283
LOWgraphiti_core/graphiti.py1230
LOWgraphiti_core/tracer.py89
LOWgraphiti_core/tracer.py108
LOWgraphiti_core/decorators.py29
LOWgraphiti_core/decorators.py36
LOWgraphiti_core/llm_client/client.py265
LOWgraphiti_core/llm_client/azure_openai_client.py130
LOWgraphiti_core/llm_client/openai_generic_client.py138
LOWgraphiti_core/llm_client/anthropic_client.py254
LOWgraphiti_core/llm_client/anthropic_client.py344
LOWgraphiti_core/llm_client/openai_base_client.py211
LOWgraphiti_core/llm_client/gemini_client.py236
LOWgraphiti_core/llm_client/gemini_client.py363
LOWgraphiti_core/driver/neptune_driver.py243
LOWgraphiti_core/driver/neptune_driver.py351
LOWgraphiti_core/driver/falkordb_driver.py268
LOWgraphiti_core/driver/falkordb_driver.py332
LOWgraphiti_core/driver/falkordb/operations/graph_ops.py72
LOWgraphiti_core/embedder/gemini.py113
LOWgraphiti_core/utils/datetime_utils.py45
LOWgraphiti_core/utils/bulk_utils.py151
LOWgraphiti_core/utils/bulk_utils.py374
LOWgraphiti_core/utils/bulk_utils.py489
LOWgraphiti_core/utils/content_chunking.py145
LOWgraphiti_core/utils/content_chunking.py719
LOWgraphiti_core/utils/maintenance/combined_extraction.py41
LOWgraphiti_core/utils/maintenance/attribute_utils.py220
LOWgraphiti_core/utils/maintenance/edge_operations.py325
LOWgraphiti_core/utils/maintenance/edge_operations.py623
LOWgraphiti_core/search/search_filters.py120
LOWgraphiti_core/search/search.py253
LOWgraphiti_core/search/search.py463
LOWgraphiti_core/search/search.py663
LOWgraphiti_core/search/search.py763
LOWgraphiti_core/search/search_utils.py300
LOWgraphiti_core/search/search_utils.py672
LOWgraphiti_core/search/search_utils.py1061
LOWgraphiti_core/cross_encoder/gemini_reranker_client.py73
LOWmcp_server/tests/run_tests.py227
LOWmcp_server/tests/run_tests.py102
LOWmcp_server/tests/test_http_integration.py15
LOWmcp_server/tests/test_mcp_integration.py184
LOWmcp_server/tests/test_mcp_integration.py219
LOWmcp_server/tests/test_mcp_integration.py291
LOWmcp_server/tests/test_stress_load.py57
LOWmcp_server/tests/test_falkordb_integration.py138
LOWmcp_server/tests/test_falkordb_integration.py49
LOWmcp_server/tests/test_comprehensive_integration.py113
LOWmcp_server/tests/test_mcp_transports.py88
LOWmcp_server/tests/test_mcp_transports.py185
3 more matches not shown…
Redundant / Tautological Comments41 hits · 59 pts
SeverityFileLineSnippet
LOWtests/utils/maintenance/test_entity_extraction.py542 # Set MAX_NODES to a small value for testing
LOWtests/cross_encoder/test_bge_reranker_client_int.py38 # Check if the output is a list of tuples
LOWtests/cross_encoder/test_bge_reranker_client_int.py42 # Check if the output has the correct length
LOWtests/cross_encoder/test_bge_reranker_client_int.py45 # Check if the scores are floats and passages are strings
LOWtests/cross_encoder/test_bge_reranker_client_int.py50 # Check if the results are sorted in descending order
LOWtests/cross_encoder/test_bge_reranker_client_int.py62 # Check if the output is an empty list
LOWtests/cross_encoder/test_bge_reranker_client_int.py73 # Check if the output has one item
LOWtests/cross_encoder/test_bge_reranker_client_int.py76 # Check if the passage is correct and the score is a float
LOW.github/workflows/pr-triage.yml22 # Check if PR is from a fork (external contributor)
LOWgraphiti_core/graphiti.py1697 # Check if an edge with this UUID already exists with different source/target nodes.
LOWgraphiti_core/helpers.py154 # Check if string contains only ASCII alphanumeric characters, dashes, or underscores
LOWgraphiti_core/llm_client/azure_openai_client.py136 # Check if this is a ParsedChatCompletion (from beta.chat.completions.parse)
LOWgraphiti_core/llm_client/gemini_client.py130 # Check if the response was blocked for safety reasons
LOWgraphiti_core/llm_client/gemini_client.py350 # Check if it's a rate limit error based on Gemini API error codes
LOWgraphiti_core/llm_client/gemini_client.py440 # Check if this is a safety block - these typically shouldn't be retried
LOWgraphiti_core/driver/neo4j_driver.py164 # Check if database_ is provided in kwargs.
LOWgraphiti_core/driver/neo4j/operations/graph_ops.py164 # Check if the node is already part of a community
LOWgraphiti_core/driver/falkordb/operations/graph_ops.py194 # Check if the node is already part of a community
LOWgraphiti_core/driver/kuzu/operations/graph_ops.py169 # Check if the node is already part of a community
LOWgraphiti_core/driver/neptune/operations/graph_ops.py169 # Check if the node is already part of a community
LOWgraphiti_core/utils/content_chunking.py202 # Check if capitalized (first char upper, not all caps)
LOWgraphiti_core/utils/content_chunking.py271 # Check if adding this element would exceed chunk size
LOWgraphiti_core/utils/content_chunking.py330 # Check if adding this entry would exceed chunk size
LOWgraphiti_core/utils/content_chunking.py429 # Check if adding this paragraph would exceed chunk size
LOWgraphiti_core/utils/content_chunking.py486 # Check if adding this sentence would exceed chunk size
LOWgraphiti_core/utils/content_chunking.py579 # Check if it's JSON (array of message objects)
LOWgraphiti_core/utils/maintenance/community_operations.py270 # Check if the node is already part of a community
LOWgraphiti_core/utils/maintenance/node_operations.py308 # Check if this entity type should be excluded
LOWgraphiti_core/utils/maintenance/node_operations.py858 # Check if node should be summarized at all
LOWgraphiti_core/cross_encoder/gemini_reranker_client.py150 # Check if it's a rate limit error based on Gemini API error codes
LOWmcp_server/tests/run_tests.py42 # Check if .env file exists for helpful message
LOWmcp_server/tests/run_tests.py295 # Check if prerequisites are met
LOWmcp_server/tests/test_http_integration.py223 # Check if server is running
LOWmcp_server/tests/test_mcp_integration.py192 # Check if we have any episodes
LOWmcp_server/tests/test_mcp_integration.py314 # Check if response indicates success
LOWmcp_server/tests/test_falkordb_integration.py76 # Check if status indicates FalkorDB is working
LOWmcp_server/tests/test_comprehensive_integration.py482 # Check if timeout was handled gracefully
LOWmcp_server/tests/test_mcp_transports.py72 # Check if we have most expected tools
LOWmcp_server/tests/test_integration.py154 # Check if we have any episodes
LOWmcp_server/src/config/schema.py36 # Check if the entire value is a single env var expression
LOWmcp_server/src/services/factories.py130 # Check if this is a reasoning model (o1, o3, gpt-5 family)
Docstring Block Structure8 hits · 40 pts
SeverityFileLineSnippet
HIGHgraphiti_core/helpers.py137 Validate that a group_id contains only ASCII alphanumeric characters, dashes, and underscores. Args: g
HIGHgraphiti_core/helpers.py192 Validate that excluded entity types are valid type names. Args: excluded_entity_types: List of entity
HIGHgraphiti_core/llm_client/anthropic_client.py152Extract JSON from text content. A helper method to extract JSON from text content, used when tool use fails or
HIGHgraphiti_core/llm_client/anthropic_client.py261 Generate a response from the Anthropic LLM using tool-based approach for all requests. Args:
HIGHgraphiti_core/llm_client/anthropic_client.py355 Generate a response from the LLM. Args: messages: List of message objects to send to the L
HIGHgraphiti_core/llm_client/gemini_client.py243 Generate a response from the Gemini language model. Args: messages (list[Message]): A list
HIGHgraphiti_core/prompts/prompt_helpers.py24 Serialize data to JSON for use in prompts. Args: data: The data to serialize ensure_ascii: If
HIGHmcp_server/src/services/factories.py74Validate API key is present. Args: provider_name: Name of the provider (e.g., 'OpenAI', 'Anthropic')
Cross-Language Confusion4 hits · 20 pts
SeverityFileLineSnippet
HIGHgraphiti_core/llm_client/client.py183 'it to null; never explain the absence in the field itself.'
HIGHgraphiti_core/prompts/extract_nodes.py443ENTITY: {{"name": "Northwind", "industry": null}}
HIGHmcp_server/src/graphiti_mcp_server.py253 f' - Using Docker Compose: cd mcp_server && docker compose up\n'
HIGHmcp_server/src/graphiti_mcp_server.py264 f' - Using Docker Compose: cd mcp_server && docker compose -f docker/docker-compose-neo4j.y
Over-Commented Block17 hits · 16 pts
SeverityFileLineSnippet
LOWexamples/quickstart/quickstart_neo4j.py61 # Connect to Neo4j and set up Graphiti indices
LOWexamples/wizard_of_oz/runner.py61 llm_client = AnthropicClient(LLMConfig(api_key=os.environ.get('ANTHROPIC_API_KEY')))
LOW.github/secret_scanning.yml1# Secret scanning configuration
LOW.github/workflows/codeql.yml1# For most projects, this workflow file will not need changing; you simply need
LOW.github/workflows/codeql.yml61
LOW.github/workflows/cla.yml21 uses: contributor-assistant/github-action@ca4a40a7d1004f18d9960b404b97e5f30a505a08 # v2.6.1
LOW.github/workflows/cla.yml41 #lock-pullrequest-aftermerge: false - if you don't want this bot to automatically lock the pull request after
LOW.github/workflows/claude-code-review-manual.yml81
LOW.github/workflows/claude-code-review.yml81 # This allowlist is the primary security boundary preventing
LOW.github/workflows/claude.yml41 actions: read
LOW.github/workflows/claude.yml61 # Optional: Custom environment variables for Claude
LOW.github/workflows/pr-triage.yml161 # ============================================================
LOW.github/workflows/pr-triage.yml301 # prompt injection attacks from exfiltrating secrets (ANTHROPIC_API_KEY,
LOWgraphiti_core/helpers.py41# Content chunking configuration for entity extraction
LOWgraphiti_core/utils/maintenance/attribute_utils.py41# Track invalid env values we've already warned about so a misconfigured deploy
LOWmcp_server/src/graphiti_mcp_server.py41if env_file.exists():
LOWmcp_server/src/graphiti_mcp_server.py61# - Anthropic (default): 50 RPM -> SEMAPHORE_LIMIT=5-8
Magic Placeholder Names3 hits · 15 pts
SeverityFileLineSnippet
HIGHREADME.md431 api_key="your-api-key",
HIGHexamples/azure-openai/README.md38AZURE_OPENAI_API_KEY=your-api-key-here
HIGHmcp_server/docker/README.md21OPENAI_API_KEY=your-api-key-here
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippet
CRITICALgraphiti_core/llm_client/azure_openai_client.py104 return await self.client.beta.chat.completions.parse(**request_kwargs)
AI Slop Vocabulary5 hits · 8 pts
SeverityFileLineSnippet
MEDIUMmcp_server/tests/test_mcp_integration.py442 # Print comprehensive summary
MEDIUMmcp_server/tests/test_stress_load.py496 """Generate comprehensive load test report."""
MEDIUMmcp_server/tests/test_comprehensive_integration.py36 """Enhanced test client for comprehensive Graphiti MCP testing."""
MEDIUMmcp_server/tests/test_comprehensive_integration.py619 """Generate a comprehensive test report from metrics."""
LOWmcp_server/tests/test_integration.py253 # Should not error, just return empty results
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippet
LOWtests/utils/maintenance/test_entity_extraction.py113 {'name': 'Acme Corp', 'entity_type_id': 0}, # Default Entity
LOWtests/utils/maintenance/test_entity_extraction.py131 acme = next(n for n in nodes if n.name == 'Acme Corp')
LOWgraphiti_core/prompts/extract_nodes.py261JSON: {{"user": "Jordan Lee", "company": "Acme Corp", "role": "engineer", "start_date": "2024-01-15", "location": "Denve
LOWgraphiti_core/prompts/extract_nodes.py262Good extractions: "Jordan Lee" (Person), "Acme Corp" (Organization), "Denver" (Location)
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippet
MEDIUM.github/workflows/codeql.yml56 # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how