Add Ruff linter rule to prevent typing.TypedDict usage

Adds banned-api configuration to both main and MCP server pyproject.toml
files to enforce typing_extensions.TypedDict usage, required for
Pydantic compatibility on Python < 3.12.

Also includes Ruff auto-formatting changes to quote styles.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Daniel Chalef 2025-11-08 18:13:23 -08:00
parent 248d85f515
commit d1ed9834c6
4 changed files with 33 additions and 23 deletions

View file

@ -59,6 +59,10 @@ select = [
]
ignore = ["E501"]
[tool.ruff.lint.flake8-tidy-imports.banned-api]
# Required by Pydantic on Python < 3.12
"typing.TypedDict".msg = "Use typing_extensions.TypedDict instead."
[tool.ruff.format]
quote-style = "single"
indent-style = "space"

View file

@ -245,35 +245,35 @@ class GraphitiService:
db_provider = self.config.database.provider
if db_provider.lower() == 'falkordb':
raise RuntimeError(
f"\n{'='*70}\n"
f"Database Connection Error: FalkorDB is not running\n"
f"{'='*70}\n\n"
f"FalkorDB at {db_config['host']}:{db_config['port']} is not accessible.\n\n"
f"To start FalkorDB:\n"
f" - Using Docker Compose: cd mcp_server && docker compose up\n"
f" - Or run FalkorDB manually: docker run -p 6379:6379 falkordb/falkordb\n\n"
f"{'='*70}\n"
f'\n{"=" * 70}\n'
f'Database Connection Error: FalkorDB is not running\n'
f'{"=" * 70}\n\n'
f'FalkorDB at {db_config["host"]}:{db_config["port"]} is not accessible.\n\n'
f'To start FalkorDB:\n'
f' - Using Docker Compose: cd mcp_server && docker compose up\n'
f' - Or run FalkorDB manually: docker run -p 6379:6379 falkordb/falkordb\n\n'
f'{"=" * 70}\n'
) from db_error
elif db_provider.lower() == 'neo4j':
raise RuntimeError(
f"\n{'='*70}\n"
f"Database Connection Error: Neo4j is not running\n"
f"{'='*70}\n\n"
f"Neo4j at {db_config.get('uri', 'unknown')} is not accessible.\n\n"
f"To start Neo4j:\n"
f" - Using Docker Compose: cd mcp_server && docker compose -f docker/docker-compose-neo4j.yml up\n"
f" - Or install Neo4j Desktop from: https://neo4j.com/download/\n"
f" - Or run Neo4j manually: docker run -p 7474:7474 -p 7687:7687 neo4j:latest\n\n"
f"{'='*70}\n"
f'\n{"=" * 70}\n'
f'Database Connection Error: Neo4j is not running\n'
f'{"=" * 70}\n\n'
f'Neo4j at {db_config.get("uri", "unknown")} is not accessible.\n\n'
f'To start Neo4j:\n'
f' - Using Docker Compose: cd mcp_server && docker compose -f docker/docker-compose-neo4j.yml up\n'
f' - Or install Neo4j Desktop from: https://neo4j.com/download/\n'
f' - Or run Neo4j manually: docker run -p 7474:7474 -p 7687:7687 neo4j:latest\n\n'
f'{"=" * 70}\n'
) from db_error
else:
raise RuntimeError(
f"\n{'='*70}\n"
f"Database Connection Error: {db_provider} is not running\n"
f"{'='*70}\n\n"
f"{db_provider} at {db_config.get('uri', 'unknown')} is not accessible.\n\n"
f"Please ensure {db_provider} is running and accessible.\n\n"
f"{'='*70}\n"
f'\n{"=" * 70}\n'
f'Database Connection Error: {db_provider} is not running\n'
f'{"=" * 70}\n\n'
f'{db_provider} at {db_config.get("uri", "unknown")} is not accessible.\n\n'
f'Please ensure {db_provider} is running and accessible.\n\n'
f'{"=" * 70}\n'
) from db_error
# Re-raise other errors
raise

2
mcp_server/uv.lock generated
View file

@ -1082,6 +1082,7 @@ dependencies = [
{ name = "openai" },
{ name = "pydantic-settings" },
{ name = "pyyaml" },
{ name = "typing-extensions" },
]
[package.optional-dependencies]
@ -1132,6 +1133,7 @@ requires-dist = [
{ name = "pyyaml", specifier = ">=6.0" },
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.7.1" },
{ name = "sentence-transformers", marker = "extra == 'providers'", specifier = ">=2.0.0" },
{ name = "typing-extensions", specifier = ">=4.0.0" },
{ name = "voyageai", marker = "extra == 'providers'", specifier = ">=0.2.3" },
]
provides-extras = ["azure", "providers", "dev"]

View file

@ -90,6 +90,10 @@ select = [
]
ignore = ["E501"]
[tool.ruff.lint.flake8-tidy-imports.banned-api]
# Required by Pydantic on Python < 3.12
"typing.TypedDict".msg = "Use typing_extensions.TypedDict instead."
[tool.ruff.format]
quote-style = "single"
indent-style = "space"