Skip to content

Commit 30fd3b6

Browse files
committed
style: fix Ruff lint errors and apply Black formatting
- Combine nested with statements using parenthesized context managers - Remove unused variable assignment in test_schema.py - Apply Black formatting to all test files Fixes SIM117 (nested with) and F841 (unused variable) lint errors.
1 parent 7efa4fc commit 30fd3b6

9 files changed

Lines changed: 74 additions & 72 deletions

File tree

tests/conftest.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
from app.config import Settings
2222
from app.main import app
2323
from db.connection import DatabaseManager
24-
from db.schema import SchemaInfo, TableInfo, ColumnInfo
25-
24+
from db.schema import ColumnInfo, SchemaInfo, TableInfo
2625

2726
# =============================================================================
2827
# Configuration Fixtures

tests/integration/test_api.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
Integration tests for API endpoints.
33
"""
44

5-
import pytest
65
from fastapi.testclient import TestClient
76

87

tests/integration/test_database.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
from sqlalchemy.pool import StaticPool
1212

1313
from db.connection import DatabaseManager
14+
from db.executor import SafeQueryExecutor
1415
from db.schema import SchemaIntrospector, get_sample_data
15-
from db.executor import SafeQueryExecutor, QueryResult
1616

1717

1818
@pytest.fixture

tests/unit/test_config.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66
from pydantic import ValidationError
77

88
from app.config import (
9-
APISettings,
109
AgentSettings,
10+
APISettings,
1111
DatabaseSettings,
12-
HuggingFaceSettings,
1312
Settings,
1413
get_settings,
1514
)

tests/unit/test_connection.py

Lines changed: 60 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
Unit tests for database connection management.
33
"""
44

5-
import pytest
65
from unittest.mock import AsyncMock, MagicMock, patch
76

8-
from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession
7+
import pytest
8+
from sqlalchemy.ext.asyncio import AsyncEngine
99

1010
from app.exceptions import DatabaseConnectionException
1111
from db.connection import (
1212
DatabaseManager,
1313
_get_async_url,
14-
get_database,
1514
close_database,
15+
get_database,
1616
)
1717

1818

@@ -110,48 +110,54 @@ def test_dialect_property(self, mock_settings: MagicMock) -> None:
110110
@pytest.mark.asyncio
111111
async def test_initialize_success(self, mock_settings: MagicMock) -> None:
112112
"""Test successful database initialization."""
113-
with patch("db.connection.get_settings", return_value=mock_settings):
114-
with patch("db.connection.create_async_engine") as mock_engine:
115-
mock_engine.return_value = MagicMock(spec=AsyncEngine)
113+
with (
114+
patch("db.connection.get_settings", return_value=mock_settings),
115+
patch("db.connection.create_async_engine") as mock_engine,
116+
):
117+
mock_engine.return_value = MagicMock(spec=AsyncEngine)
116118

117-
manager = DatabaseManager(url="sqlite:///test.db")
118-
await manager.initialize()
119+
manager = DatabaseManager(url="sqlite:///test.db")
120+
await manager.initialize()
119121

120-
assert manager._is_initialized is True
121-
assert manager._engine is not None
122-
mock_engine.assert_called_once()
122+
assert manager._is_initialized is True
123+
assert manager._engine is not None
124+
mock_engine.assert_called_once()
123125

124126
@pytest.mark.asyncio
125127
async def test_initialize_already_initialized(
126128
self, mock_settings: MagicMock
127129
) -> None:
128130
"""Test that initialize is idempotent."""
129-
with patch("db.connection.get_settings", return_value=mock_settings):
130-
with patch("db.connection.create_async_engine") as mock_engine:
131-
mock_engine.return_value = MagicMock(spec=AsyncEngine)
131+
with (
132+
patch("db.connection.get_settings", return_value=mock_settings),
133+
patch("db.connection.create_async_engine") as mock_engine,
134+
):
135+
mock_engine.return_value = MagicMock(spec=AsyncEngine)
132136

133-
manager = DatabaseManager(url="sqlite:///test.db")
134-
await manager.initialize()
135-
await manager.initialize() # Second call should be no-op
137+
manager = DatabaseManager(url="sqlite:///test.db")
138+
await manager.initialize()
139+
await manager.initialize() # Second call should be no-op
136140

137-
# Should only be called once
138-
assert mock_engine.call_count == 1
141+
# Should only be called once
142+
assert mock_engine.call_count == 1
139143

140144
@pytest.mark.asyncio
141145
async def test_initialize_failure(self, mock_settings: MagicMock) -> None:
142146
"""Test database initialization failure."""
143-
with patch("db.connection.get_settings", return_value=mock_settings):
144-
with patch(
147+
with (
148+
patch("db.connection.get_settings", return_value=mock_settings),
149+
patch(
145150
"db.connection.create_async_engine",
146151
side_effect=Exception("Connection failed"),
147-
):
148-
manager = DatabaseManager(url="sqlite:///test.db")
152+
),
153+
):
154+
manager = DatabaseManager(url="sqlite:///test.db")
149155

150-
with pytest.raises(DatabaseConnectionException) as exc_info:
151-
await manager.initialize()
156+
with pytest.raises(DatabaseConnectionException) as exc_info:
157+
await manager.initialize()
152158

153-
assert "Failed to initialize database" in str(exc_info.value.message)
154-
assert manager._is_initialized is False
159+
assert "Failed to initialize database" in str(exc_info.value.message)
160+
assert manager._is_initialized is False
155161

156162
@pytest.mark.asyncio
157163
async def test_close(self, mock_settings: MagicMock) -> None:
@@ -221,44 +227,50 @@ def reset_global_manager(self) -> None:
221227
@pytest.mark.asyncio
222228
async def test_get_database_creates_manager(self, mock_settings: MagicMock) -> None:
223229
"""Test get_database creates and initializes manager."""
224-
with patch("db.connection.get_settings", return_value=mock_settings):
225-
with patch("db.connection.create_async_engine") as mock_engine:
226-
mock_engine.return_value = MagicMock(spec=AsyncEngine)
230+
with (
231+
patch("db.connection.get_settings", return_value=mock_settings),
232+
patch("db.connection.create_async_engine") as mock_engine,
233+
):
234+
mock_engine.return_value = MagicMock(spec=AsyncEngine)
227235

228-
manager = await get_database()
236+
manager = await get_database()
229237

230-
assert manager is not None
231-
assert manager._is_initialized is True
238+
assert manager is not None
239+
assert manager._is_initialized is True
232240

233241
@pytest.mark.asyncio
234242
async def test_get_database_returns_same_instance(
235243
self, mock_settings: MagicMock
236244
) -> None:
237245
"""Test get_database returns the same instance."""
238-
with patch("db.connection.get_settings", return_value=mock_settings):
239-
with patch("db.connection.create_async_engine") as mock_engine:
240-
mock_engine.return_value = MagicMock(spec=AsyncEngine)
246+
with (
247+
patch("db.connection.get_settings", return_value=mock_settings),
248+
patch("db.connection.create_async_engine") as mock_engine,
249+
):
250+
mock_engine.return_value = MagicMock(spec=AsyncEngine)
241251

242-
manager1 = await get_database()
243-
manager2 = await get_database()
252+
manager1 = await get_database()
253+
manager2 = await get_database()
244254

245-
assert manager1 is manager2
255+
assert manager1 is manager2
246256

247257
@pytest.mark.asyncio
248258
async def test_close_database(self, mock_settings: MagicMock) -> None:
249259
"""Test close_database closes the global manager."""
250-
with patch("db.connection.get_settings", return_value=mock_settings):
251-
with patch("db.connection.create_async_engine") as mock_engine:
252-
mock_engine_instance = MagicMock(spec=AsyncEngine)
253-
mock_engine_instance.dispose = AsyncMock()
254-
mock_engine.return_value = mock_engine_instance
260+
with (
261+
patch("db.connection.get_settings", return_value=mock_settings),
262+
patch("db.connection.create_async_engine") as mock_engine,
263+
):
264+
mock_engine_instance = MagicMock(spec=AsyncEngine)
265+
mock_engine_instance.dispose = AsyncMock()
266+
mock_engine.return_value = mock_engine_instance
255267

256-
await get_database()
257-
await close_database()
268+
await get_database()
269+
await close_database()
258270

259-
import db.connection
271+
import db.connection
260272

261-
assert db.connection._db_manager is None
273+
assert db.connection._db_manager is None
262274

263275
@pytest.mark.asyncio
264276
async def test_close_database_when_not_initialized(self) -> None:

tests/unit/test_exceptions.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
Unit tests for exception classes.
33
"""
44

5-
import pytest
6-
75
from app.exceptions import (
86
AgentMaxStepsExceededException,
97
AuthenticationException,

tests/unit/test_executor.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,22 @@
33
"""
44

55
import asyncio
6-
import pytest
7-
from datetime import datetime
8-
from unittest.mock import AsyncMock, MagicMock, patch
6+
from unittest.mock import AsyncMock, MagicMock
97

8+
import pytest
109
from sqlalchemy.ext.asyncio import AsyncSession
1110

1211
from app.exceptions import (
1312
QueryExecutionException,
1413
QueryTimeoutException,
15-
UnsupportedQueryTypeException,
1614
)
1715
from db.executor import (
16+
DANGEROUS_KEYWORDS,
17+
INJECTION_PATTERNS,
1818
QueryResult,
1919
QueryValidator,
2020
SafeQueryExecutor,
2121
sanitize_identifier,
22-
DANGEROUS_KEYWORDS,
23-
INJECTION_PATTERNS,
2422
)
2523

2624

@@ -391,7 +389,7 @@ def test_dangerous_keywords_coverage(self) -> None:
391389
"EXECUTE",
392390
}
393391

394-
assert DANGEROUS_KEYWORDS == expected_keywords
392+
assert expected_keywords == DANGEROUS_KEYWORDS
395393

396394
def test_injection_patterns_coverage(self) -> None:
397395
"""Test that injection patterns cover common attacks."""

tests/unit/test_prompts.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
Unit tests for prompt templates module.
33
"""
44

5-
import pytest
6-
75
from models.prompts import (
8-
ArcticPromptTemplate,
96
AgentPromptTemplate,
7+
ArcticPromptTemplate,
108
ChainOfThoughtPromptTemplate,
119
FewShotExample,
1210
build_prompt,

tests/unit/test_schema.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,18 @@
22
Unit tests for database schema introspection utilities.
33
"""
44

5-
import pytest
6-
from datetime import datetime
7-
from unittest.mock import AsyncMock, MagicMock, patch
5+
from unittest.mock import AsyncMock, MagicMock
86

7+
import pytest
98
from sqlalchemy.ext.asyncio import AsyncEngine
109

11-
from app.exceptions import SchemaNotFoundException, TableNotFoundException
10+
from app.exceptions import TableNotFoundException
1211
from db.schema import (
1312
ColumnInfo,
1413
ForeignKeyInfo,
15-
TableInfo,
1614
SchemaInfo,
1715
SchemaIntrospector,
16+
TableInfo,
1817
get_sample_data,
1918
)
2019

@@ -262,7 +261,7 @@ async def test_get_schema_skips_cache_when_disabled(
262261
# Mock run_sync to return empty schema
263262
mock_connection.run_sync.return_value = {"tables": []}
264263

265-
result = await introspector.get_schema("test_db", use_cache=False)
264+
await introspector.get_schema("test_db", use_cache=False)
266265

267266
# Should have called connect (not used cache)
268267
mock_engine.connect.assert_called_once()

0 commit comments

Comments
 (0)