Files
Juan DenisandClaude Opus 5 5ecc0a86bb fix(services): drop @classmethod stacked on @staticmethod
SystemService._is_iana_timezone and CronService._same_application were both
declared as

    @classmethod
    @staticmethod
    def _method(...)

which is meaningless and only ever worked because Python 3.9 let classmethod
chain to another descriptor. That chaining was deprecated in 3.11 and REMOVED
in 3.13, so cls stops being absorbed and leaks in as the first argument:

    TypeError: SystemService._is_iana_timezone() takes 1 positional argument
               but 2 were given

Latent on the 3.11 we ship today, fatal on 3.13. It takes out server-time
display, every cron-to-application operation (suspend/resume/clear/jobs_for)
and, through those, application soft delete and restore.

Plain @staticmethod is correct on every version — calling a staticmethod
through `cls.` has always been fine — so no call site changes.

These were the ONLY two occurrences in the tree. Found while establishing
whether the stack runs on Python 3.13 for Debian 13 (issue #99): they were the
entire delta between 3.13 and 3.11, 8 failures across 4 files. With them fixed
those files are 45 passed on both interpreters.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 11:55:01 -04:00
..