Compatibility with DateTime >= 3
On the way to Zope 4, the biggest change was DateTime >= 3, which has these main differences:
- 
DateTimeinstances are new style classes - 
DateTime.__eq__now take into the timezone into account - 
DateTimesupports timezone naive ( https://docs.python.org/3/library/datetime.html#aware-and-naive-objects ) - actually this is since DateTime 2.12 , but since we fully patched the method where the parsing happens, ERP5's patched DateTime never used timezone naive dates. - pickles are also different.
 
These are changes to prepare ERP5 code base to support DateTime >= 3, while keeping compatibility with the previous behavior, this means that we keep patching to keep the same behavior as DateTime 2, so that DateTime.__eq__ ignores timezone difference and DateTime does not support timezone naive dates - these two different behavior seemed to introduce too much breakages, especially in project code, with no immediate benefit for our usages. For now, while ERP5 is still based on Zope 2 / DateTime 2 the fact that DateTime are new style classes has no impact, this will only impact once we switch to Zope 4.
This also change the code to adjust the part where we were depending on implementation details of DateTime and where the details changed on DateTime 3, sometimes exposing higher level API, like the new timeZoneContext to use in tests.