Skip to content

Issue with Timezone and Pendulum #5067

Description

@ciltocruz

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

Activity

  1. added theissue type on Jun 27, 2026
  2. crawln45 commented on Jun 28, 2026

    @crawln45
    Contributor

    Set your TZ info on the system. It's not reading the system TZ if memory serves me right.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions