fix(lint): resolve remaining ruff errors — TYPE_CHECKING, unused vars, E702
Some checks are pending
CI / Python tests (push) Waiting to run
CI / Frontend typecheck + tests (push) Waiting to run
Mirror / mirror (push) Waiting to run

- categories.py: TYPE_CHECKING guard for EbayTokenManager (F821)
- test_browser_pool.py: remove unused errors var (F841), split semicolon
  thread calls onto separate lines (E702)
This commit is contained in:
pyr0ball 2026-07-06 02:48:43 -07:00
parent f7072cf806
commit 5db890c9f9
2 changed files with 17 additions and 13 deletions

View file

@ -11,10 +11,13 @@ from __future__ import annotations
import logging
import sqlite3
from datetime import datetime, timedelta, timezone
from typing import Optional
from typing import TYPE_CHECKING, Optional
import requests
if TYPE_CHECKING:
from app.platforms.ebay.auth import EbayTokenManager
log = logging.getLogger(__name__)
# Bootstrap table — common categories for self-hosters without eBay API credentials.

View file

@ -8,7 +8,6 @@ from __future__ import annotations
import subprocess
import threading
import time
from typing import Any
from unittest.mock import MagicMock, patch
import pytest
@ -55,11 +54,11 @@ def _make_fake_slot():
class TestGetPoolSingleton:
def test_returns_same_instance(self):
from app.platforms.ebay.browser_pool import get_pool, BrowserPool
from app.platforms.ebay.browser_pool import get_pool
assert get_pool() is get_pool()
def test_returns_browser_pool_instance(self):
from app.platforms.ebay.browser_pool import get_pool, BrowserPool
from app.platforms.ebay.browser_pool import BrowserPool, get_pool
assert isinstance(get_pool(), BrowserPool)
def test_default_size_is_two(self):
@ -122,8 +121,8 @@ class TestLifecycle:
class TestFetchHtmlSlotHit:
def test_uses_existing_slot_and_replenishes(self):
from app.platforms.ebay.browser_pool import BrowserPool
import app.platforms.ebay.browser_pool as _mod
from app.platforms.ebay.browser_pool import BrowserPool
pool = BrowserPool(size=1)
slot = _make_fake_slot()
@ -147,8 +146,8 @@ class TestFetchHtmlSlotHit:
mock_register.assert_called_once_with(fresh_slot)
def test_delay_is_respected(self):
from app.platforms.ebay.browser_pool import BrowserPool
import app.platforms.ebay.browser_pool as _mod
from app.platforms.ebay.browser_pool import BrowserPool
pool = BrowserPool(size=1)
_mod._thread_local.slot = _make_fake_slot()
@ -188,8 +187,8 @@ class TestFetchHtmlFallback:
)
def test_falls_back_when_pooled_fetch_raises(self):
from app.platforms.ebay.browser_pool import BrowserPool
import app.platforms.ebay.browser_pool as _mod
from app.platforms.ebay.browser_pool import BrowserPool
pool = BrowserPool(size=1)
slot = _make_fake_slot()
@ -281,7 +280,6 @@ class TestThreadLocalSlotManagement:
pool._playwright_available = True
slots_seen: list = []
errors: list = []
def worker():
new_slot = _make_fake_slot()
@ -291,8 +289,10 @@ class TestThreadLocalSlotManagement:
t1 = threading.Thread(target=worker)
t2 = threading.Thread(target=worker)
t1.start(); t2.start()
t1.join(); t2.join()
t1.start()
t2.start()
t1.join()
t2.join()
assert len(slots_seen) == 2
# Each thread got its own slot object (they may differ or coincidentally share
@ -318,6 +318,7 @@ class TestImportErrorHandling:
def test_start_logs_warning_when_playwright_missing(self, caplog):
import logging
from app.platforms.ebay.browser_pool import BrowserPool
pool = BrowserPool(size=1)
@ -344,7 +345,7 @@ class TestImportErrorHandling:
class TestReplenishSlot:
def test_replenish_closes_old_context_and_opens_new(self):
from app.platforms.ebay.browser_pool import _replenish_slot, _PooledBrowser
from app.platforms.ebay.browser_pool import _PooledBrowser, _replenish_slot
old_ctx = MagicMock()
new_ctx = MagicMock()
@ -417,9 +418,9 @@ class TestCloseSlot:
class TestScraperUsesPool:
def test_fetch_url_delegates_to_pool(self):
from app.db.store import Store
from app.platforms.ebay.browser_pool import BrowserPool
from app.platforms.ebay.scraper import ScrapedEbayAdapter
from app.db.store import Store
store = MagicMock(spec=Store)
adapter = ScrapedEbayAdapter(store, delay=0)
@ -438,8 +439,8 @@ class TestScraperUsesPool:
)
def test_fetch_url_uses_cache_before_pool(self):
from app.platforms.ebay.scraper import ScrapedEbayAdapter, _html_cache, _HTML_CACHE_TTL
from app.db.store import Store
from app.platforms.ebay.scraper import _HTML_CACHE_TTL, ScrapedEbayAdapter, _html_cache
store = MagicMock(spec=Store)
adapter = ScrapedEbayAdapter(store, delay=0)