Skip to content

roomdoo-locks-base: dedupe exceptions, fix LockOfflineError parent#20

Merged
jesusVMayor merged 1 commit into
mainfrom
fix/dedup-exception-defs
Jun 18, 2026
Merged

roomdoo-locks-base: dedupe exceptions, fix LockOfflineError parent#20
jesusVMayor merged 1 commit into
mainfrom
fix/dedup-exception-defs

Conversation

@jesusVMayor

Copy link
Copy Markdown
Member

Problema

LockAPIError, LockNoPermissionError y LockOfflineError estaban definidas dos veces en exceptions.py:

  • como subclases de LockError (añadidas en la implementación de TTLock, 2026-04-20)
  • como subclases de LockOperationError (añadidas antes, 2026-04-10)

En Python gana la última definición del módulo → quedaban las de LockOperationError, y las copias LockError eran código muerto. Efecto colateral: LockOfflineError quedaba clasificada como error de operación de negocio.

Cambio

  • Una sola definición por excepción.
  • LockOfflineError vuelve bajo LockError, junto a LockConnectionError: es un error transitorio/de conectividad que el llamante reintenta, no un rechazo de negocio.
  • LockAPIError y LockNoPermissionError se mantienen bajo LockOperationError (lo que ya ganaba en runtime).

Sin cambio de comportamiento

Nadie hace except LockOperationError ni isinstance de la jerarquía; todos los conectores (ttlock, tesa, omnitec, salto) las lanzan por nombre con mensaje, y pms_smartlock_base captura LockOfflineError por nombre como transitorio. Verificado: jerarquía correcta, sin duplicados, mensajes preservados.

LockAPIError, LockNoPermissionError and LockOfflineError were each defined
twice: once as LockError subclasses (added by the TTLock impl) and once as
LockOperationError subclasses (added earlier). Python kept the latter, so
the LockError copies were dead code and LockOfflineError ended up classed
as a business-operation error.

Collapse each to a single definition and move LockOfflineError back under
LockError next to LockConnectionError: it is a transient/connectivity error
the caller retries, not a business rejection. No behaviour change — nothing
catches LockOperationError and every site raises these by name.
@jesusVMayor jesusVMayor merged commit 1145908 into main Jun 18, 2026
1 check passed
@jesusVMayor jesusVMayor deleted the fix/dedup-exception-defs branch June 18, 2026 14:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant