fix: resolve all pre-existing ruff lint errors

Fix E501 line-too-long in backlog.py, network.py, test_network.py.
Fix F541 f-string-without-placeholders in network.py.
Fix I001 unsorted imports in network.py.
Remove unused datetime import in test_cert.py (F401).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
user
2026-02-21 19:13:34 +01:00
parent 2ab5f95476
commit 638f12dbb3
4 changed files with 30 additions and 14 deletions

View File

@@ -187,7 +187,8 @@ class Backlog:
"""
assert self._db is not None
await self._db.execute(
"INSERT INTO nickserv_creds (network, nick, password, email, registered_at, host, status, verify_url) "
"INSERT INTO nickserv_creds "
"(network, nick, password, email, registered_at, host, status, verify_url) "
"VALUES (?, ?, ?, ?, ?, ?, ?, ?) "
"ON CONFLICT(network, nick) DO UPDATE SET "
"password = excluded.password, email = excluded.email, "
@@ -231,7 +232,10 @@ class Backlog:
async def get_nickserv_creds_by_host(
self, network: str, host: str
) -> tuple[str, str] | None:
"""Get stored verified NickServ nick and password by host. Returns (nick, password) or None."""
"""Get stored verified NickServ nick and password by host.
Returns (nick, password) or None.
"""
assert self._db is not None
cursor = await self._db.execute(
"SELECT nick, password FROM nickserv_creds "

View File

@@ -492,7 +492,7 @@ class Network:
Called immediately after SASL PLAIN success so the fingerprint is
registered before a potential K-line disconnects us.
"""
from bouncer.cert import fingerprint, has_cert, cert_path
from bouncer.cert import cert_path, fingerprint, has_cert
nick = self._sasl_nick or self.nick
if not has_cert(self.data_dir, self.cred_network, nick):
@@ -594,14 +594,19 @@ class Network:
)
if creds:
stored_nick, stored_pass = creds
log.info("[%s] found stored creds for nick %s, switching", self.cfg.name, stored_nick)
log.info("[%s] found stored creds for nick %s, switching",
self.cfg.name, stored_nick)
# Switch to the registered nick first
self._nick_confirmed.clear()
await self.send_raw("NICK", stored_nick)
try:
await asyncio.wait_for(self._nick_confirmed.wait(), timeout=self.bouncer_cfg.nick_timeout)
await asyncio.wait_for(
self._nick_confirmed.wait(),
timeout=self.bouncer_cfg.nick_timeout,
)
except asyncio.TimeoutError:
log.warning("[%s] nick change to %s not confirmed", self.cfg.name, stored_nick)
log.warning("[%s] nick change to %s not confirmed",
self.cfg.name, stored_nick)
self._nickserv_password = stored_pass
self._nickserv_pending = "identify"
@@ -687,7 +692,7 @@ class Network:
return
if "you are now logged in" in lower:
self._status(f"Q auth successful")
self._status("Q auth successful")
log.info("[%s] Q AUTH succeeded", self.cfg.name)
self._nickserv_pending = ""
# Switch to configured nick if set
@@ -695,7 +700,10 @@ class Network:
self._nick_confirmed.clear()
await self.send_raw("NICK", self.cfg.nick)
try:
await asyncio.wait_for(self._nick_confirmed.wait(), timeout=self.bouncer_cfg.nick_timeout)
await asyncio.wait_for(
self._nick_confirmed.wait(),
timeout=self.bouncer_cfg.nick_timeout,
)
except asyncio.TimeoutError:
log.warning("[%s] nick change to %s not confirmed",
self.cfg.name, self.cfg.nick)
@@ -798,7 +806,7 @@ class Network:
self._nickserv_pending = ""
await self._nickserv_register()
elif "too soon" in lower or "wait" in lower or "too many" in lower:
self._status(f"REGISTER rejected (too soon/rate limited)")
self._status("REGISTER rejected (too soon/rate limited)")
log.warning("[%s] NickServ rate limited: %s", self.cfg.name, text)
self._nickserv_pending = ""
await self._nickserv_complete()
@@ -837,7 +845,7 @@ class Network:
url = match.group(1)
token = url.rsplit("/verify/", 1)[-1] if "/verify/" in url else ""
log.info("[%s] visiting verification URL: %s", self.cfg.name, url)
self._status(f"visiting verification URL...")
self._status("visiting verification URL...")
try:
import aiohttp
from aiohttp_socks import ProxyConnector
@@ -1005,7 +1013,10 @@ class Network:
self._nick_confirmed.clear()
await self.send_raw("NICK", p_nick)
try:
await asyncio.wait_for(self._nick_confirmed.wait(), timeout=self.bouncer_cfg.nick_timeout)
await asyncio.wait_for(
self._nick_confirmed.wait(),
timeout=self.bouncer_cfg.nick_timeout,
)
except asyncio.TimeoutError:
log.warning("[%s] could not switch to pending nick %s",
self.cfg.name, p_nick)

View File

@@ -91,7 +91,6 @@ class TestGenerateCert:
assert fp1 != fp2 # New cert = new fingerprint
def test_custom_validity_days(self, data_dir: Path) -> None:
import datetime
from cryptography import x509 as x509_mod
pem = generate_cert(data_dir, "libera", "testnick", validity_days=365)
cert_data = pem.read_bytes()

View File

@@ -324,7 +324,8 @@ class TestHandleWelcome:
writer.drain = AsyncMock()
net._writer = writer
await net._handle(_msg(":server 001 coolguy :Welcome to the network coolguy!user@host.example.com"))
welcome = ":server 001 coolguy :Welcome to the network coolguy!user@host.example.com"
await net._handle(_msg(welcome))
assert net.nick == "coolguy"
assert net.state == State.PROBATION
@@ -337,7 +338,8 @@ class TestHandleWelcome:
writer.drain = AsyncMock()
net._writer = writer
await net._handle(_msg(":server 001 nick :Welcome to the IRC Network nick!user@visible.host.com"))
welcome = ":server 001 nick :Welcome to the IRC Network nick!user@visible.host.com"
await net._handle(_msg(welcome))
assert net.visible_host == "visible.host.com"