Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-DateTime for openSUSE:Factory 
checked in at 2023-11-14 21:43:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-DateTime (Old)
 and      /work/SRC/openSUSE:Factory/.python-DateTime.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-DateTime"

Tue Nov 14 21:43:34 2023 rev:9 rq:1125873 version:5.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-DateTime/python-DateTime.changes  
2023-07-27 16:51:14.521961235 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-DateTime.new.17445/python-DateTime.changes   
    2023-11-14 21:43:42.902135697 +0100
@@ -1,0 +2,7 @@
+Tue Nov 14 12:39:24 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 5.3:
+  * Add support for Python 3.12.
+  * Add preliminary support for Python 3.13a2.
+
+-------------------------------------------------------------------

Old:
----
  DateTime-5.2.tar.gz

New:
----
  DateTime-5.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-DateTime.spec ++++++
--- /var/tmp/diff_new_pack.sXO3Yv/_old  2023-11-14 21:43:43.934173900 +0100
+++ /var/tmp/diff_new_pack.sXO3Yv/_new  2023-11-14 21:43:43.938174048 +0100
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-DateTime
-Version:        5.2
+Version:        5.3
 Release:        0
 Summary:        Zope DateTime data type
 License:        ZPL-2.1

++++++ DateTime-5.2.tar.gz -> DateTime-5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/CHANGES.rst new/DateTime-5.3/CHANGES.rst
--- old/DateTime-5.2/CHANGES.rst        2023-07-19 08:25:14.000000000 +0200
+++ new/DateTime-5.3/CHANGES.rst        2023-11-14 09:06:33.000000000 +0100
@@ -1,6 +1,14 @@
 Changelog
 =========
 
+5.3 (2023-11-14)
+----------------
+
+- Add support for Python 3.12.
+
+- Add preliminary support for Python 3.13a2.
+
+
 5.2 (2023-07-19)
 ----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/PKG-INFO new/DateTime-5.3/PKG-INFO
--- old/DateTime-5.2/PKG-INFO   2023-07-19 08:25:15.164005300 +0200
+++ new/DateTime-5.3/PKG-INFO   2023-11-14 09:06:33.584568300 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: DateTime
-Version: 5.2
+Version: 5.3
 Summary: This package provides a DateTime data type, as known from Zope. 
Unless you need to communicate with Zope APIs, you're probably better off using 
Python's built-in datetime module.
 Home-page: https://github.com/zopefoundation/DateTime
 Author: Zope Foundation and Contributors
@@ -18,10 +18,13 @@
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Requires-Python: >=3.7
 License-File: LICENSE.txt
+Requires-Dist: zope.interface
+Requires-Dist: pytz
 
 .. image:: https://github.com/zopefoundation/DateTime/workflows/tests/badge.svg
         :target: 
https://github.com/zopefoundation/DateTime/actions?query=workflow%3Atests
@@ -106,7 +109,7 @@
 functions (Compatibility Note: int, long and float return the number
 of days since 1901 in GMT rather than local machine timezone).
 DateTime objects also provide access to their value in a float format
-usable with the python time module, provided that the value of the
+usable with the Python time module, provided that the value of the
 object falls in the range of the epoch-based time module.
 
 A DateTime object should be considered immutable; all conversion and numeric
@@ -196,7 +199,7 @@
   permitted around the delimiters.  Year, month, and day values may be
   given in any order as long as it is possible to distinguish the
   components.  If all three components are numbers that are less than
-  13, then a a month-day-year ordering is assumed.
+  13, then a month-day-year ordering is assumed.
 
   The time component consists of hour, minute, and second values
   separated by colons.  The hour value must be an integer between 0
@@ -412,7 +415,7 @@
     >>> dt.year()
     1997
 
-* ``month()`` retursn the month of the object as an integer:
+* ``month()`` returns the month of the object as an integer:
 
     >>> dt.month()
     3
@@ -422,12 +425,12 @@
     >>> dt.Month()
     'March'
 
-* ``aMonth()`` returns the abreviated month name:
+* ``aMonth()`` returns the abbreviated month name:
 
     >>> dt.aMonth()
     'Mar'
 
-* ``pMonth()`` returns the abreviated (with period) month name:
+* ``pMonth()`` returns the abbreviated (with period) month name:
 
     >>> dt.pMonth()
     'Mar.'
@@ -685,7 +688,7 @@
   3618678
 
 DateTime objects can be compared to other DateTime objects OR floating
-point numbers such as the ones which are returned by the python time
+point numbers such as the ones which are returned by the Python time
 module by using the equalTo method. Using this API, True is returned if the
 object represents a date/time equal to the specified DateTime or time module
 style time:
@@ -839,6 +842,14 @@
 Changelog
 =========
 
+5.3 (2023-11-14)
+----------------
+
+- Add support for Python 3.12.
+
+- Add preliminary support for Python 3.13a2.
+
+
 5.2 (2023-07-19)
 ----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/buildout.cfg 
new/DateTime-5.3/buildout.cfg
--- old/DateTime-5.2/buildout.cfg       2023-07-19 08:25:14.000000000 +0200
+++ new/DateTime-5.3/buildout.cfg       2023-11-14 09:06:33.000000000 +0100
@@ -6,6 +6,9 @@
     interpreter
     test
 
+[buildout:windows]
+bin-directory = Scripts
+
 [versions]
 DateTime =
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/setup.cfg new/DateTime-5.3/setup.cfg
--- old/DateTime-5.2/setup.cfg  2023-07-19 08:25:15.164251300 +0200
+++ new/DateTime-5.3/setup.cfg  2023-11-14 09:06:33.584891300 +0100
@@ -15,7 +15,7 @@
 force_single_line = True
 combine_as_imports = True
 sections = FUTURE,STDLIB,THIRDPARTY,ZOPE,FIRSTPARTY,LOCALFOLDER
-known_third_party = six, docutils, pkg_resources
+known_third_party = docutils, pkg_resources, pytz
 known_zope = 
 known_first_party = 
 default_section = ZOPE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/setup.py new/DateTime-5.3/setup.py
--- old/DateTime-5.2/setup.py   2023-07-19 08:25:14.000000000 +0200
+++ new/DateTime-5.3/setup.py   2023-11-14 09:06:33.000000000 +0100
@@ -26,7 +26,7 @@
 with open(os.path.join(here, 'CHANGES.rst')) as f:
     CHANGES = f.read()
 
-version = '5.2'
+version = '5.3'
 
 setup(
     name='DateTime',
@@ -60,6 +60,7 @@
         "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: 3.10",
         "Programming Language :: Python :: 3.11",
+        "Programming Language :: Python :: 3.12",
         "Programming Language :: Python :: Implementation :: CPython",
         "Programming Language :: Python :: Implementation :: PyPy",
     ],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/src/DateTime/DateTime.py 
new/DateTime-5.3/src/DateTime/DateTime.py
--- old/DateTime-5.2/src/DateTime/DateTime.py   2023-07-19 08:25:14.000000000 
+0200
+++ new/DateTime-5.3/src/DateTime/DateTime.py   2023-11-14 09:06:33.000000000 
+0100
@@ -54,7 +54,7 @@
 
 
 # To control rounding errors, we round system time to the nearest
-# microsecond.  Then delicate calculations can rely on that the
+# microsecond.  Then delicate calculations can rely on the fact that the
 # maximum precision that needs to be preserved is known.
 _system_time = time
 
@@ -406,7 +406,7 @@
         long, and float functions (Compatibility Note: int, long and
         float return the number of days since 1901 in GMT rather than
         local machine timezone). DateTime objects also provide access
-        to their value in a float format usable with the python time
+        to their value in a float format usable with the Python time
         module, provided that the value of the object falls in the
         range of the epoch-based time module, and as a datetime.datetime
         object.
@@ -478,7 +478,7 @@
         Note that in all cases the local machine timezone is used for
         representation if no timezone is specified.
 
-        DateTimes may be created with from zero to seven arguments.
+        DateTimes may be created with zero to seven arguments.
 
           - If the function is called with no arguments or with None,
             then the current date/time is returned, represented in the
@@ -510,16 +510,16 @@
             essentially be the same as if you had captured time.time()
             at the specified date and time on a machine in that timezone:
 
-            <PRE>
-            e=DateTime('US/Eastern')
+            <pre>
+            e = DateTime('US/Eastern')
             # returns current date/time, represented in US/Eastern.
 
-            x=DateTime('1997/3/9 1:45pm')
+            x = DateTime('1997/3/9 1:45pm')
             # returns specified time, represented in local machine zone.
 
-            y=DateTime('Mar 9, 1997 13:45:00')
+            y = DateTime('Mar 9, 1997 13:45:00')
             # y is equal to x
-            </PRE>
+            </pre>
 
             The date component consists of year, month, and day
             values. The year value must be a one-, two-, or
@@ -535,7 +535,7 @@
             month, and day values may be given in any order as long
             as it is possible to distinguish the components. If all
             three components are numbers that are less than 13,
-            then a a month-day-year ordering is assumed.
+            then a month-day-year ordering is assumed.
 
             The time component consists of hour, minute, and second
             values separated by colons.  The hour value must be an
@@ -555,14 +555,14 @@
             The existing ISO8601 parser was extended to support almost
             the whole ISO8601 specification. New formats includes:
 
-            <PRE>
-            y=DateTime('1993-045')
+            <pre>
+            y = DateTime('1993-045')
             # returns the 45th day from 1993, which is 14th February
 
-            w=DateTime('1993-W06-7')
+            w = DateTime('1993-W06-7')
             # returns the 7th day from the 6th week from 1993, which
             # is also 14th February
-            </PRE>
+            </pre>
 
             See http://en.wikipedia.org/wiki/ISO_8601 for full specs.
 
@@ -608,19 +608,19 @@
             with a value of that gmt time will be returned, represented
             in the given timezone.
 
-            <PRE>
+            <pre>
             import time
-            t=time.time()
+            t = time.time()
 
-            now_east=DateTime(t,'US/Eastern')
+            now_east = DateTime(t,'US/Eastern')
             # Time t represented as US/Eastern
 
-            now_west=DateTime(t,'US/Pacific')
+            now_west = DateTime(t,'US/Pacific')
             # Time t represented as US/Pacific
 
             # now_east == now_west
             # only their representations are different
-            </PRE>
+            </pre>
 
           - If the function is invoked with three or more numeric
             arguments, then the first is taken to be an integer
@@ -847,7 +847,7 @@
         # cannot rely on C sprintf (Python '%') formatting to round
         # consistently; doing it ourselves ensures that all but truly
         # horrid C sprintf implementations will yield the same result
-        # x-platform, provided the format asks for exactly 6 digits after
+        # cross-platform, provided the format asks for exactly 6 digits after
         # the decimal point.
         sc = round(sc, 6)
         if sc >= 60.0:  # can happen if, e.g., orig sc was 59.9999999
@@ -950,7 +950,6 @@
                 ints.append(float(s))
                 continue
 
-            # AJ
             ts_results = INT_PATTERN.match(st, i)
             if ts_results:
                 s = ts_results.group(0)
@@ -1124,7 +1123,7 @@
 
     def timeTime(self):
         """Return the date/time as a floating-point number in UTC,
-        in the format used by the python time module.
+        in the format used by the Python time module.
 
         Note that it is possible to create date/time values with
         DateTime that have no meaningful value to the time module.
@@ -1175,7 +1174,7 @@
     def isCurrentYear(self):
         """Return true if this object represents a date/time
         that falls within the current year, in the context
-        of this object\'s timezone representation.
+        of this object's timezone representation.
         """
         t = time()
         return safegmtime(t + _tzoffset(self._tz, t))[0] == self._year
@@ -1183,7 +1182,7 @@
     def isCurrentMonth(self):
         """Return true if this object represents a date/time
         that falls within the current month, in the context
-        of this object\'s timezone representation.
+        of this object's timezone representation.
         """
         t = time()
         gmt = safegmtime(t + _tzoffset(self._tz, t))
@@ -1192,7 +1191,7 @@
     def isCurrentDay(self):
         """Return true if this object represents a date/time
         that falls within the current day, in the context
-        of this object\'s timezone representation.
+        of this object's timezone representation.
         """
         t = time()
         gmt = safegmtime(t + _tzoffset(self._tz, t))
@@ -1202,7 +1201,7 @@
     def isCurrentHour(self):
         """Return true if this object represents a date/time
         that falls within the current hour, in the context
-        of this object\'s timezone representation.
+        of this object's timezone representation.
         """
         t = time()
         gmt = safegmtime(t + _tzoffset(self._tz, t))
@@ -1212,7 +1211,7 @@
     def isCurrentMinute(self):
         """Return true if this object represents a date/time
         that falls within the current minute, in the context
-        of this object\'s timezone representation.
+        of this object's timezone representation.
         """
         t = time()
         gmt = safegmtime(t + _tzoffset(self._tz, t))
@@ -1223,7 +1222,7 @@
     def earliestTime(self):
         """Return a new DateTime object that represents the earliest
         possible time (in whole seconds) that still falls within
-        the current object\'s day, in the object\'s timezone context.
+        the current object's day, in the object's timezone context.
         """
         return self.__class__(
             self._year, self._month, self._day, 0, 0, 0, self._tz)
@@ -1231,7 +1230,7 @@
     def latestTime(self):
         """Return a new DateTime object that represents the latest
         possible time (in whole seconds) that still falls within
-        the current object\'s day, in the object\'s timezone context.
+        the current object's day, in the object's timezone context.
         """
         return self.__class__(
             self._year, self._month, self._day, 23, 59, 59, self._tz)
@@ -1239,7 +1238,7 @@
     def greaterThan(self, t):
         """Compare this DateTime object to another DateTime object
         OR a floating point number such as that which is returned
-        by the python time module.
+        by the Python time module.
 
         Returns true if the object represents a date/time greater
         than the specified DateTime or time module style time.
@@ -1259,7 +1258,7 @@
     def greaterThanEqualTo(self, t):
         """Compare this DateTime object to another DateTime object
         OR a floating point number such as that which is returned
-        by the python time module.
+        by the Python time module.
 
         Returns true if the object represents a date/time greater
         than or equal to the specified DateTime or time module style
@@ -1280,7 +1279,7 @@
     def equalTo(self, t):
         """Compare this DateTime object to another DateTime object
         OR a floating point number such as that which is returned
-        by the python time module.
+        by the Python time module.
 
         Returns true if the object represents a date/time equal to
         the specified DateTime or time module style time.
@@ -1298,7 +1297,7 @@
     def notEqualTo(self, t):
         """Compare this DateTime object to another DateTime object
         OR a floating point number such as that which is returned
-        by the python time module.
+        by the Python time module.
 
         Returns true if the object represents a date/time not equal
         to the specified DateTime or time module style time.
@@ -1313,7 +1312,7 @@
         Return True if their internal state is the same. Two objects
         representing the same time in different timezones are regared as
         unequal. Use the equalTo method if you are only interested in them
-        refering to the same moment in time.
+        referring to the same moment in time.
         """
         if not isinstance(t, DateTime):
             return False
@@ -1325,7 +1324,7 @@
     def lessThan(self, t):
         """Compare this DateTime object to another DateTime object
         OR a floating point number such as that which is returned
-        by the python time module.
+        by the Python time module.
 
         Returns true if the object represents a date/time less than
         the specified DateTime or time module style time.
@@ -1345,7 +1344,7 @@
     def lessThanEqualTo(self, t):
         """Compare this DateTime object to another DateTime object
         OR a floating point number such as that which is returned
-        by the python time module.
+        by the Python time module.
 
         Returns true if the object represents a date/time less than
         or equal to the specified DateTime or time module style time.
@@ -1364,7 +1363,7 @@
 
     def isLeapYear(self):
         """Return true if the current year (in the context of the
-        object\'s timezone) is a leap year.
+        object's timezone) is a leap year.
         """
         return (self._year % 4 == 0 and
                 (self._year % 100 != 0 or self._year % 400 == 0))
@@ -1469,11 +1468,11 @@
         return self._pday
 
     def dow(self):
-        """Return the integer day of the week, where sunday is 0."""
+        """Return the integer day of the week, where Sunday is 0."""
         return self._dayoffset
 
     def dow_1(self):
-        """Return the integer day of the week, where sunday is 1."""
+        """Return the integer day of the week, where Sunday is 1."""
         return self._dayoffset + 1
 
     @property
@@ -1523,10 +1522,10 @@
         return self._micros
 
     def timezoneNaive(self):
-        """The python datetime module introduces the idea of distinguishing
+        """The Python datetime module introduces the idea of distinguishing
         between timezone aware and timezone naive datetime values. For lossless
-        conversion to and from datetime.datetime record if we record this
-        information using True / False. DateTime makes no distinction, when we
+        conversion to and from datetime.datetime we record this
+        information using True / False. DateTime makes no distinction, if we
         don't have any information we return None here.
         """
         try:
@@ -1605,7 +1604,7 @@
 
     # New formats
     def fCommon(self):
-        """Return a string representing the object\'s value
+        """Return a string representing the object's value
         in the format: March 1, 1997 1:45 pm.
         """
         return '%s %s, %4.4d %s:%2.2d %s' % (
@@ -1613,7 +1612,7 @@
                self._minute, self._pm)
 
     def fCommonZ(self):
-        """Return a string representing the object\'s value
+        """Return a string representing the object's value
         in the format: March 1, 1997 1:45 pm US/Eastern.
         """
         return '%s %s, %4.4d %d:%2.2d %s %s' % (
@@ -1621,7 +1620,7 @@
                self._minute, self._pm, self._tz)
 
     def aCommon(self):
-        """Return a string representing the object\'s value
+        """Return a string representing the object's value
         in the format: Mar 1, 1997 1:45 pm.
         """
         return '%s %s, %4.4d %s:%2.2d %s' % (
@@ -1629,7 +1628,7 @@
                self._minute, self._pm)
 
     def aCommonZ(self):
-        """Return a string representing the object\'s value
+        """Return a string representing the object's value
         in the format: Mar 1, 1997 1:45 pm US/Eastern.
         """
         return '%s %s, %4.4d %d:%2.2d %s %s' % (
@@ -1637,7 +1636,7 @@
                self._minute, self._pm, self._tz)
 
     def pCommon(self):
-        """Return a string representing the object\'s value
+        """Return a string representing the object's value
         in the format: Mar. 1, 1997 1:45 pm.
         """
         return '%s %s, %4.4d %s:%2.2d %s' % (
@@ -1645,7 +1644,7 @@
                self._minute, self._pm)
 
     def pCommonZ(self):
-        """Return a string representing the object\'s value
+        """Return a string representing the object's value
         in the format: Mar. 1, 1997 1:45 pm US/Eastern.
         """
         return '%s %s, %4.4d %d:%2.2d %s %s' % (
@@ -1719,7 +1718,7 @@
         return dt
 
     def utcdatetime(self):
-        """Convert the time to UTC then return a timezone naive datetime object
+        """Convert the time to UTC and return a timezone naive datetime object
         """
         utc = self.toZone('UTC')
         second = int(utc._second)
@@ -1730,7 +1729,7 @@
 
     def __add__(self, other):
         """A DateTime may be added to a number and a number may be
-        added to a DateTime;  two DateTimes cannot be added.
+        added to a DateTime; two DateTimes cannot be added.
         """
         if hasattr(other, '_t'):
             raise DateTimeError('Cannot add two DateTimes')
@@ -1812,7 +1811,7 @@
 
     def _parse_iso8601(self, s):
         # preserve the previously implied contract
-        # who know where this could be used...
+        # who knows where this could be used...
         return self._parse_iso8601_preserving_tznaive(s)[:7]
 
     def _parse_iso8601_preserving_tznaive(self, s):
@@ -1899,7 +1898,7 @@
     def JulianDay(self):
         """Return the Julian day.
 
-        See: http://www.tondering.dk/claus/cal/node3.html#sec-calcjd
+        See: https://www.tondering.dk/claus/cal/julperiod.php#formula
         """
         a = (14 - self._month) // 12
         y = self._year + 4800 - a
@@ -1910,7 +1909,7 @@
     def week(self):
         """Return the week number according to ISO.
 
-        See: http://www.tondering.dk/claus/cal/node6.html
+        See: https://www.tondering.dk/claus/cal/week.php#weekno
         """
         J = self.JulianDay()
         d4 = (J + 31741 - (J % 7)) % 146097 % 36524 % 1461
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/src/DateTime/DateTime.txt 
new/DateTime-5.3/src/DateTime/DateTime.txt
--- old/DateTime-5.2/src/DateTime/DateTime.txt  2023-07-19 08:25:14.000000000 
+0200
+++ new/DateTime-5.3/src/DateTime/DateTime.txt  2023-11-14 09:06:33.000000000 
+0100
@@ -55,7 +55,7 @@
 functions (Compatibility Note: int, long and float return the number
 of days since 1901 in GMT rather than local machine timezone).
 DateTime objects also provide access to their value in a float format
-usable with the python time module, provided that the value of the
+usable with the Python time module, provided that the value of the
 object falls in the range of the epoch-based time module.
 
 A DateTime object should be considered immutable; all conversion and numeric
@@ -145,7 +145,7 @@
   permitted around the delimiters.  Year, month, and day values may be
   given in any order as long as it is possible to distinguish the
   components.  If all three components are numbers that are less than
-  13, then a a month-day-year ordering is assumed.
+  13, then a month-day-year ordering is assumed.
 
   The time component consists of hour, minute, and second values
   separated by colons.  The hour value must be an integer between 0
@@ -361,7 +361,7 @@
     >>> dt.year()
     1997
 
-* ``month()`` retursn the month of the object as an integer:
+* ``month()`` returns the month of the object as an integer:
 
     >>> dt.month()
     3
@@ -371,12 +371,12 @@
     >>> dt.Month()
     'March'
 
-* ``aMonth()`` returns the abreviated month name:
+* ``aMonth()`` returns the abbreviated month name:
 
     >>> dt.aMonth()
     'Mar'
 
-* ``pMonth()`` returns the abreviated (with period) month name:
+* ``pMonth()`` returns the abbreviated (with period) month name:
 
     >>> dt.pMonth()
     'Mar.'
@@ -634,7 +634,7 @@
   3618678
 
 DateTime objects can be compared to other DateTime objects OR floating
-point numbers such as the ones which are returned by the python time
+point numbers such as the ones which are returned by the Python time
 module by using the equalTo method. Using this API, True is returned if the
 object represents a date/time equal to the specified DateTime or time module
 style time:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/src/DateTime/interfaces.py 
new/DateTime-5.3/src/DateTime/interfaces.py
--- old/DateTime-5.2/src/DateTime/interfaces.py 2023-07-19 08:25:14.000000000 
+0200
+++ new/DateTime-5.3/src/DateTime/interfaces.py 2023-11-14 09:06:33.000000000 
+0100
@@ -32,14 +32,13 @@
 class IDateTime(Interface):
     # Conversion and comparison methods
 
-    # TODO determine whether this method really is part of the public API
     def localZone(ltm=None):
-        '''Returns the time zone on the given date.  The time zone
-        can change according to daylight savings.'''
+        """Returns the time zone on the given date.  The time zone
+        can change according to daylight savings."""
 
     def timeTime():
         """Return the date/time as a floating-point number in UTC, in
-        the format used by the python time module.  Note that it is
+        the format used by the Python time module.  Note that it is
         possible to create date/time values with DateTime that have no
         meaningful value to the time module."""
 
@@ -97,7 +96,7 @@
     def greaterThan(t):
         """Compare this DateTime object to another DateTime object OR
         a floating point number such as that which is returned by the
-        python time module. Returns true if the object represents a
+        Python time module. Returns true if the object represents a
         date/time greater than the specified DateTime or time module
         style time.  Revised to give more correct results through
         comparison of long integer milliseconds."""
@@ -107,7 +106,7 @@
     def greaterThanEqualTo(t):
         """Compare this DateTime object to another DateTime object OR
         a floating point number such as that which is returned by the
-        python time module. Returns true if the object represents a
+        Python time module. Returns true if the object represents a
         date/time greater than or equal to the specified DateTime or
         time module style time.  Revised to give more correct results
         through comparison of long integer milliseconds."""
@@ -117,7 +116,7 @@
     def equalTo(t):
         """Compare this DateTime object to another DateTime object OR
         a floating point number such as that which is returned by the
-        python time module. Returns true if the object represents a
+        Python time module. Returns true if the object represents a
         date/time equal to the specified DateTime or time module style
         time.  Revised to give more correct results through comparison
         of long integer milliseconds."""
@@ -127,7 +126,7 @@
     def notEqualTo(t):
         """Compare this DateTime object to another DateTime object OR
         a floating point number such as that which is returned by the
-        python time module. Returns true if the object represents a
+        Python time module. Returns true if the object represents a
         date/time not equal to the specified DateTime or time module
         style time.  Revised to give more correct results through
         comparison of long integer milliseconds."""
@@ -137,7 +136,7 @@
     def lessThan(t):
         """Compare this DateTime object to another DateTime object OR
         a floating point number such as that which is returned by the
-        python time module. Returns true if the object represents a
+        Python time module. Returns true if the object represents a
         date/time less than the specified DateTime or time module
         style time.  Revised to give more correct results through
         comparison of long integer milliseconds."""
@@ -147,7 +146,7 @@
     def lessThanEqualTo(t):
         """Compare this DateTime object to another DateTime object OR
         a floating point number such as that which is returned by the
-        python time module. Returns true if the object represents a
+        Python time module. Returns true if the object represents a
         date/time less than or equal to the specified DateTime or time
         module style time.  Revised to give more correct results
         through comparison of long integer milliseconds."""
@@ -176,13 +175,13 @@
         """Return the full month name"""
 
     def aMonth():
-        """Return the abreviated month name."""
+        """Return the abbreviated month name."""
 
     def Mon():
         """Compatibility: see aMonth"""
 
     def pMonth():
-        """Return the abreviated (with period) month name."""
+        """Return the abbreviated (with period) month name."""
 
     def Mon_():
         """Compatibility: see pMonth"""
@@ -201,10 +200,10 @@
         representation of the object"""
 
     def aDay():
-        """Return the abreviated name of the day of the week"""
+        """Return the abbreviated name of the day of the week"""
 
     def pDay():
-        """Return the abreviated (with period) name of the day of the
+        """Return the abbreviated (with period) name of the day of the
         week"""
 
     def Day_():
@@ -334,7 +333,7 @@
 
     def JulianDay():
         """Return the Julian day according to
-        http://www.tondering.dk/claus/cal/node3.html#sec-calcjd
+        https://www.tondering.dk/claus/cal/julperiod.php#formula
         """
 
     def week():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/src/DateTime/pytz.txt 
new/DateTime-5.3/src/DateTime/pytz.txt
--- old/DateTime-5.2/src/DateTime/pytz.txt      2023-07-19 08:25:14.000000000 
+0200
+++ new/DateTime-5.3/src/DateTime/pytz.txt      2023-11-14 09:06:33.000000000 
+0100
@@ -132,7 +132,7 @@
     ['Africa/Abidjan'... 'Africa/Accra'... 'IDLE'... 'NZST'... 'NZT'...]
 
 The _zidx attribute is a list of lower-case and possibly abbreviated
-time zone names that can be mapped to offical zone names.
+time zone names that can be mapped to official zone names.
 
     >>> 'australia/yancowinna' in cache._zidx
     True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/src/DateTime/pytz_support.py 
new/DateTime-5.3/src/DateTime/pytz_support.py
--- old/DateTime-5.2/src/DateTime/pytz_support.py       2023-07-19 
08:25:14.000000000 +0200
+++ new/DateTime-5.3/src/DateTime/pytz_support.py       2023-11-14 
09:06:33.000000000 +0100
@@ -22,7 +22,7 @@
 from .interfaces import DateTimeError
 
 
-EPOCH = datetime.utcfromtimestamp(0).replace(tzinfo=pytz.utc)
+EPOCH = datetime.fromtimestamp(0, tz=pytz.utc)
 
 _numeric_timezone_data = {
     'GMT': ('GMT', 0, 1, [], '', [(0, 0, 0)], 'GMT\000'),
@@ -223,7 +223,7 @@
 
     def info(self, t=None):
         if t is None:
-            dt = datetime.utcnow().replace(tzinfo=pytz.utc)
+            dt = datetime.now(tz=pytz.utc)
         else:
             # can't use utcfromtimestamp past 2038
             dt = EPOCH + timedelta(0, t)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/src/DateTime.egg-info/PKG-INFO 
new/DateTime-5.3/src/DateTime.egg-info/PKG-INFO
--- old/DateTime-5.2/src/DateTime.egg-info/PKG-INFO     2023-07-19 
08:25:15.000000000 +0200
+++ new/DateTime-5.3/src/DateTime.egg-info/PKG-INFO     2023-11-14 
09:06:33.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: DateTime
-Version: 5.2
+Version: 5.3
 Summary: This package provides a DateTime data type, as known from Zope. 
Unless you need to communicate with Zope APIs, you're probably better off using 
Python's built-in datetime module.
 Home-page: https://github.com/zopefoundation/DateTime
 Author: Zope Foundation and Contributors
@@ -18,10 +18,13 @@
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Requires-Python: >=3.7
 License-File: LICENSE.txt
+Requires-Dist: zope.interface
+Requires-Dist: pytz
 
 .. image:: https://github.com/zopefoundation/DateTime/workflows/tests/badge.svg
         :target: 
https://github.com/zopefoundation/DateTime/actions?query=workflow%3Atests
@@ -106,7 +109,7 @@
 functions (Compatibility Note: int, long and float return the number
 of days since 1901 in GMT rather than local machine timezone).
 DateTime objects also provide access to their value in a float format
-usable with the python time module, provided that the value of the
+usable with the Python time module, provided that the value of the
 object falls in the range of the epoch-based time module.
 
 A DateTime object should be considered immutable; all conversion and numeric
@@ -196,7 +199,7 @@
   permitted around the delimiters.  Year, month, and day values may be
   given in any order as long as it is possible to distinguish the
   components.  If all three components are numbers that are less than
-  13, then a a month-day-year ordering is assumed.
+  13, then a month-day-year ordering is assumed.
 
   The time component consists of hour, minute, and second values
   separated by colons.  The hour value must be an integer between 0
@@ -412,7 +415,7 @@
     >>> dt.year()
     1997
 
-* ``month()`` retursn the month of the object as an integer:
+* ``month()`` returns the month of the object as an integer:
 
     >>> dt.month()
     3
@@ -422,12 +425,12 @@
     >>> dt.Month()
     'March'
 
-* ``aMonth()`` returns the abreviated month name:
+* ``aMonth()`` returns the abbreviated month name:
 
     >>> dt.aMonth()
     'Mar'
 
-* ``pMonth()`` returns the abreviated (with period) month name:
+* ``pMonth()`` returns the abbreviated (with period) month name:
 
     >>> dt.pMonth()
     'Mar.'
@@ -685,7 +688,7 @@
   3618678
 
 DateTime objects can be compared to other DateTime objects OR floating
-point numbers such as the ones which are returned by the python time
+point numbers such as the ones which are returned by the Python time
 module by using the equalTo method. Using this API, True is returned if the
 object represents a date/time equal to the specified DateTime or time module
 style time:
@@ -839,6 +842,14 @@
 Changelog
 =========
 
+5.3 (2023-11-14)
+----------------
+
+- Add support for Python 3.12.
+
+- Add preliminary support for Python 3.13a2.
+
+
 5.2 (2023-07-19)
 ----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DateTime-5.2/tox.ini new/DateTime-5.3/tox.ini
--- old/DateTime-5.2/tox.ini    2023-07-19 08:25:14.000000000 +0200
+++ new/DateTime-5.3/tox.ini    2023-11-14 09:06:33.000000000 +0100
@@ -3,12 +3,15 @@
 [tox]
 minversion = 3.18
 envlist =
+    release-check
     lint
     py37
     py38
     py39
     py310
     py311
+    py312
+    py313
     pypy3
     coverage
 
@@ -17,10 +20,30 @@
 deps =
     zc.buildout >= 3.0.1
     wheel > 0.37
+setenv =
+    py312: VIRTUALENV_PIP=23.1.2
+    py312: PIP_REQUIRE_VIRTUALENV=0
 commands_pre =
     {envbindir}/buildout -nc {toxinidir}/buildout.cfg 
buildout:directory={envdir} buildout:develop={toxinidir} install test
 commands =
-    {envdir}/bin/test {posargs:-cv}
+    {envbindir}/test {posargs:-cv}
+
+[testenv:release-check]
+description = ensure that the distribution is ready to release
+basepython = python3
+skip_install = true
+deps =
+    twine
+    build
+    check-manifest
+    check-python-versions >= 0.20.0
+    wheel
+commands_pre =
+commands =
+    check-manifest
+    check-python-versions
+    python -m build --sdist --no-isolation
+    twine check dist/*
 
 [testenv:lint]
 basepython = python3
@@ -31,11 +54,7 @@
 commands =
     isort --check-only --diff {toxinidir}/src {toxinidir}/setup.py
     flake8 {toxinidir}/src {toxinidir}/setup.py
-    check-manifest
-    check-python-versions
 deps =
-    check-manifest
-    check-python-versions
     flake8
     isort
     # Useful flake8 plugins that are Python and Plone specific:
@@ -55,13 +74,14 @@
 basepython = python3
 skip_install = true
 allowlist_externals =
+    {[testenv]allowlist_externals}
     mkdir
 deps =
     {[testenv]deps}
     coverage
 commands =
     mkdir -p {toxinidir}/parts/htmlcov
-    coverage run {envdir}/bin/test {posargs:-cv}
+    coverage run {envbindir}/test {posargs:-cv}
     coverage html
     coverage report -m --fail-under=88
 

Reply via email to