Summary
TypeError: 'NoneType' object cannot be cast as 'str' in series plugin diff_for_humans() with pendulum 3.2 Timezone('None')
The series plugin crashes during the filter phase when calling expires.diff_for_humans() on a datetime with tzinfo=Timezone('None'). Pendulum 3.2's precise_diff C function fails because it internally does str(tzinfo) and the Timezone object has type=None, producing TypeError: 'NoneType' object cannot be cast as 'str'.
The datetimes are offset-aware (+02:00 in the logs) but the pendulum Timezone object has its internal type set to None.
Expected: The timeframe expiration should be logged normally and the task should complete.
Actual: The download task aborts with an unhandled exception. Tasks without timeframe configured (move-series-rar, ordenar) work fine.
Minimal reproducible config
I think this part is the problem:
templates:
templateSeries:
configure_series:
settings:
timeframe: 2 days <-----
target: 1080p
propers: 3 days
identified_by: ep
quality: 720p+
Log
Traceback
2026-06-28 00:15:01 CRITICAL task download BUG: Unhandled error in plugin series
: 'NoneType' object cannot be cast as 'str'
Traceback (most recent call last):
File ".../flexget/components/series/series.py", line 1026, in process_timeframe
expires.diff_for_humans(),
File ".../pendulum/datetime.py", line 744, in diff_for_humans
diff = self.diff(other)
File ".../pendulum/datetime.py", line 712, in diff
return Interval(self, dt, absolute=abs)
File ".../pendulum/interval.py", line 185, in __init__
self._delta: PreciseDiff = precise_diff(_start, _end)
TypeError: 'NoneType' object cannot be cast as 'str'
Additional information
Environment
FlexGet: 3.19.25
Python: 3.13.9
Pendulum: 3.2.0
OS: QNAP NAS (Entware)
Using Daemon (yes/no): no
Summary
TypeError: 'NoneType' object cannot be cast as 'str' in series plugin diff_for_humans() with pendulum 3.2 Timezone('None')
The series plugin crashes during the filter phase when calling expires.diff_for_humans() on a datetime with tzinfo=Timezone('None'). Pendulum 3.2's precise_diff C function fails because it internally does str(tzinfo) and the Timezone object has type=None, producing TypeError: 'NoneType' object cannot be cast as 'str'.
The datetimes are offset-aware (+02:00 in the logs) but the pendulum Timezone object has its internal type set to None.
Expected: The timeframe expiration should be logged normally and the task should complete.
Actual: The download task aborts with an unhandled exception. Tasks without timeframe configured (move-series-rar, ordenar) work fine.
Minimal reproducible config
Log
Additional information
Environment
FlexGet: 3.19.25
Python: 3.13.9
Pendulum: 3.2.0
OS: QNAP NAS (Entware)
Using Daemon (yes/no): no