Hi Paul. Thanks for the input here, and for your patience
> I am fairly certain this is going to be a tricky migration and will inevitably come with *some* user pain. I don't think this will be Python 2 → 3 style pain, but some users who have been doing the "right thing" with pytz will need to make changes to their code in the long run, which is unfortunate. Looking at all the docs, your migration guide on pytz_deprecation_shim, the example Kevin gave <https://repl.it/@severian/pytzshim#main.py>, where we do some arithmetic in a local timezone, and call `normalize()` in case we crossed a DST boundary, there's no way we can do this without forcing a breaking change somewhere. So, probably, I've been staring at this too long today, but I think we should introduce the shim in Django 4.0. Django 3.2, the next major release will be an LTS. If we hold-off introducing the change until 4.0, we can flag it as a breaking change in the 4.0 release notes, with big warnings, allowing folks extra time to hang out on the previous LTS if they need it. What I wouldn't want to do is to bring the breaking change in in Django 3.2, because we'll have a whole load of folks updating from the 2.2 LTS at about the time when it goes End of Life, and with no warning, that'd be a hard breaking change to throw on top of their other issues. We'd keep the shim in place for the entire 4.x series, removing in Django 5.0 as per the deprecation policy <https://docs.djangoproject.com/en/3.1/internals/release-process/#deprecation-policy> . I think the advantages of doing it this way are two-fold: * We allow people to focus on the semantic breaking change (in folds) separately from the code changes per se — the logic may have changed slightly in these cases, but it'll still run. * It looks easier to migrate Django's code vs branching on a new setting. (I didn't think through exactly what that might look like, so happy to see a PoC from anyone.) I'm more attached to the timeline (i.e. making the change after the next LTS) than whether we use the deprecation shim or not, but can I ask others to give this their thought too? Thanks again! Kind Regards, Carlton -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/ce04a6b7-4409-4b20-ba30-4cd64dc0cabfn%40googlegroups.com.