Files
openttd-client/lib/openttd
kovagoadiandClaude 25953bea06
Continuous Integration / lint-and-security (pull_request) Successful in 20s
Continuous Integration / tests-and-coverage (pull_request) Successful in 25s
Fix ruff lint findings across client, protocol, and tests
Resolve 51 findings from the I/RUF/BLE/TRY002/S110/PLR0402 rule set:

- Sort imports and __all__ (I001, RUF022, PLR0402). The sys.path.insert
  calls in check_public_calls.py and tests/test_e2e.py still precede the
  openttd imports that depend on them.
- Replace unused unpacked values with _ (RUF059) and annotate the two
  timetable lookup tables as ClassVar (RUF012).
- Narrow the best-effort excepts in OpenTTDClient.quit and
  OpenTTDAdminClient.quit to (OSError, SocketClosed) and log at debug
  rather than swallowing silently (BLE001, S110). The test doubles now
  raise an OSError subclass so they still exercise that branch.
- Narrow the gamescript JSON fallback to json.JSONDecodeError. The broad
  catch in receive_packet keeps a noqa: it guards untrusted wire data and
  must degrade to a no-op packet instead of killing the connection.
- Use contextlib.suppress instead of try/except/pass in tests.

ruff check . is clean, 102 tests pass, coverage stays at 100%.

Co-Authored-By: Claude <[email protected]>
2026-08-26 20:57:56 +02:00
..
2026-06-05 23:18:09 +02:00

Internal Package: openttd

This directory contains the core implementation of the OpenTTD network client.

Modules

  • __init__.py: Exposes the high-level OpenTTDClient API.
  • client.py: Implementation of the OpenTTDClient class. Manages the connection lifecycle, PAKE state, map synchronization, and keep-alive.
  • protocol.py: Implementation of the OpenTTDProtocol class. Handles low-level binary packet serialization, AEAD stream encryption, and static packet parsing.

Design Goals

  1. Encapsulation: The user should never need to manually handle bytes or encryption keys.
  2. Robustness: Gracefully handle server errors and unknown packet types.
  3. Efficiency: Use asyncio for non-blocking I/O and monocypher for fast cryptographic operations.