1Version 2.8.0 (2019-02-04)
2==========================
3
4Data updates
5------------
6
7- Updated tzdata version to to 2018i.
8
9
10Features
11--------
12
13- Added support for ``EXDATE`` parameters when parsing ``rrule`` strings.
14  Reported by @mlorant (gh issue #410), fixed by @nicoe (gh pr #859).
15- Added support for sub-minute time zone offsets in Python 3.6+.
16  Fixed by @cssherry (gh issue #582, pr #763)
17- Switched the ``tzoffset``, ``tzstr`` and ``gettz`` caches over to using weak
18  references, so that the cache expires when no other references to the
19  original ``tzinfo`` objects exist. This cache-expiry behavior is not
20  guaranteed in the public interface and may change in the future. To improve
21  performance in the case where transient references to the same time zones
22  are repeatedly created but no strong reference is continuously held, a
23  smaller "strong value" cache was also added. Weak value cache implemented by
24  @cs-cordero (gh pr #672, #801), strong cache added by
25  Gökçen Nurlu (gh issue #691, gh pr #761)
26
27
28Bugfixes
29--------
30
31- Added time zone inference when initializing an ``rrule`` with a specified
32  ``UNTIL`` but without an explicitly specified ``DTSTART``; the time zone
33  of the generated ``DTSTART`` will now be taken from the ``UNTIL`` rule.
34  Reported by @href (gh issue #652). Fixed by @absreim (gh pr #693).
35- Fixed an issue where ``parser.parse`` would raise ``Decimal``-specific errors
36  instead of a standard ``ValueError`` if certain malformed values were parsed
37  (e.g. ``NaN`` or infinite values). Reported and fixed by
38  @amureki (gh issue #662, gh pr #679).
39- Fixed issue in ``parser`` where a ``tzinfos`` call explicitly returning
40  ``None`` would throw a ``ValueError``.
41  Fixed by @parsethis (gh issue #661, gh pr #681)
42- Fixed incorrect parsing of certain dates earlier than 100 AD when repesented
43  in the form "%B.%Y.%d", e.g. "December.0031.30". (gh issue #687, pr #700)
44- Add support for ISO 8601 times with comma as the decimal separator in the
45  ``dateutil.parser.isoparse`` function. (gh pr #721)
46- Changed handling of ``T24:00`` to be compliant with the standard. ``T24:00``
47  now represents midnight on the *following* day.
48  Fixed by @cheukting (gh issue #658, gh pr #751)
49- Fixed an issue where ``isoparser.parse_isotime`` was unable to handle the
50  ``24:00`` variant representation of midnight. (gh pr #773)
51- Added support for more than 6 fractional digits in `isoparse`.
52  Reported and fixed by @jayschwa (gh issue #786, gh pr #787).
53- Added 'z' (lower case Z) as valid UTC time zone in isoparser.
54  Reported by @cjgibson (gh issue #820). Fixed by @Cheukting (gh pr #822)
55- Fixed a bug with base offset changes during DST in ``tzfile``, and refactored
56  the way base offset changes are detected. Originally reported on
57  StackOverflow by @MartinThoma. (gh issue #812, gh pr #810)
58- Fixed error condition in ``tz.gettz`` when a non-ASCII timezone is passed on
59  Windows in Python 2.7. (gh issue #802, pr #861)
60- Improved performance and inspection properties of ``tzname`` methods.
61  (gh pr #811)
62- Removed unnecessary binary_type compatibility shims.
63  Added by @jdufresne (gh pr #817)
64- Changed ``python setup.py test`` to print an error to ``stderr`` and exit
65  with 1 instead of 0. Reported and fixed by @hroncok (gh pr #814)
66- Added a ``pyproject.toml`` file with build requirements and an explicitly
67  specified build backend. (gh issue #736, gh prs #746, #863)
68
69
70Documentation changes
71---------------------
72
73- Added documentation for the ``rrule.rrulestr`` function.
74  Fixed by @prdickson (gh issue #623, gh pr #762)
75- Added documentation for ``dateutil.tz.gettz``.
76  Fixed by @weatherpattern (gh issue #647, gh pr #704)
77- Add documentation for the ``dateutil.tz.win`` module and mocked out certain
78  Windows-specific modules so that autodoc can still be run on non-Windows
79  systems. (gh issue #442, pr #715)
80- Added changelog to documentation. (gh issue #692, gh pr #707)
81- Changed order of keywords in the ``rrule`` docstring.
82  Reported and fixed by @rmahajan14 (gh issue #686, gh pr #695).
83- Improved documentation on the use of ``until`` and ``count`` parameters in
84  ``rrule``. Fixed by @lucaferocino (gh pr #755).
85- Added an example of how to use a custom ``parserinfo`` subclass to parse
86  non-standard datetime formats in the examples documentation for ``parser``.
87  Added by @prdickson (gh #753)
88- Added doctest examples to ``tzfile`` documentation.
89  Patch by @weatherpattern (gh pr #671)
90- Updated the documentation for ``relativedelta``'s ``weekday`` arguments.
91  Fixed by @kvn219 @huangy22 and @ElliotJH (gh pr #673)
92- Improved explanation of the order that ``relativedelta`` components are
93  applied in. Fixed by @kvn219 @huangy22 and @ElliotJH (gh pr #673)
94- Expanded the description and examples in the ``relativedelta`` class.
95  Contributed by @andrewcbennett (gh pr #759)
96- Improved the contributing documentation to clarify where to put new changelog
97  files. Contributed by @andrewcbennett (gh pr #757)
98- Fixed a broken doctest in the ``relativedelta`` module.
99  Fixed by @nherriot (gh pr #758).
100- Changed the default theme to ``sphinx_rtd_theme``, and changed the sphinx
101  configuration accordingly. (gh pr #707)
102- Reorganized ``dateutil.tz`` documentation and fixed issue with the
103  ``dateutil.tz`` docstring. (gh pr #714)
104- Cleaned up malformed RST in the ``tz`` documentation.
105  (gh issue #702, gh pr #706)
106- Corrected link syntax and updated URL to https for ISO year week number
107  notation in ``relativedelta`` examples. (gh issue #670, pr #711)
108
109
110Misc
111----
112
113- GH #674, GH #688, GH #699, GH #720, GH #723, GH #726, GH #727, GH #740,
114  GH #750, GH #760, GH #767, GH #772, GH #773, GH #780, GH #784, GH #785,
115  GH #791, GH #799, GH #813, GH #836, GH #839, GH #857
116
117
118Version 2.7.5 (2018-10-27)
119==========================
120
121Data updates
122------------
123
124- Update tzdata to 2018g
125
126
127Version 2.7.4 (2018-10-24)
128==========================
129
130Data updates
131------------
132
133- Updated tzdata version to 2018f.
134
135
136Version 2.7.3 (2018-05-09)
137==========================
138
139Data updates
140------------
141
142- Update tzdata to 2018e. (gh pr #710)
143
144
145Bugfixes
146--------
147
148- Fixed an issue where decimal.Decimal would cast `NaN` or infinite value in a
149  parser.parse, which will raise decimal.Decimal-specific errors. Reported and
150  fixed by @amureki (gh issue #662, gh pr #679).
151- Fixed a ValueError being thrown if tzinfos call explicity returns ``None``.
152  Reported by @pganssle (gh issue #661) Fixed by @parsethis (gh pr #681)
153- Fixed incorrect parsing of certain dates earlier than 100 AD when repesented
154  in the form "%B.%Y.%d", e.g. "December.0031.30". (gh issue #687, pr #700)
155- Fixed a bug where automatically generated DTSTART was naive even if a
156  specified UNTIL had a time zone. Automatically generated DTSTART will now
157  take on the timezone of an UNTIL date, if provided. Reported by @href (gh
158  issue #652). Fixed by @absreim (gh pr #693).
159
160
161Documentation changes
162---------------------
163
164- Corrected link syntax and updated URL to https for ISO year week number
165  notation in relativedelta examples. (gh issue #670, pr #711)
166- Add doctest examples to tzfile documentation. Done by @weatherpattern and
167  @pganssle (gh pr #671)
168- Updated the documentation for relativedelta. Removed references to tuple
169  arguments for weekday, explained effect of weekday(_, 1) and better explained
170  the order of operations that relativedelta applies. Fixed by @kvn219
171  @huangy22 and @ElliotJH (gh pr #673)
172- Added changelog to documentation. (gh issue #692, gh pr #707)
173- Changed order of keywords in rrule docstring. Reported and fixed by
174  @rmahajan14 (gh issue #686, gh pr #695).
175- Added documentation for ``dateutil.tz.gettz``. Reported by @pganssle (gh
176  issue #647). Fixed by @weatherpattern (gh pr #704)
177- Cleaned up malformed RST in the ``tz`` documentation. (gh issue #702, gh pr
178  #706)
179- Changed the default theme to sphinx_rtd_theme, and changed the sphinx
180  configuration to go along with that. (gh pr #707)
181- Reorganized ``dateutil.tz`` documentation and fixed issue with the
182  ``dateutil.tz`` docstring. (gh pr #714)
183
184
185Misc
186----
187
188- GH #674, GH #688, GH #699
189
190
191Version 2.7.2 (2018-03-26)
192==========================
193
194Bugfixes
195--------
196
197- Fixed an issue with the setup script running in non-UTF-8 environment.
198  Reported and fixed by @gergondet (gh pr #651)
199
200
201Misc
202----
203
204- GH #655
205
206
207Version 2.7.1 (2018-03-24)
208===========================
209
210Data updates
211------------
212
213- Updated tzdata version to 2018d.
214
215
216Bugfixes
217--------
218
219- Fixed issue where parser.parse would occasionally raise
220  decimal.Decimal-specific error types rather than ValueError. Reported by
221  @amureki (gh issue #632). Fixed by @pganssle (gh pr #636).
222- Improve error message when rrule's dtstart and until are not both naive or
223  both aware. Reported and fixed by @ryanpetrello (gh issue #633, gh pr #634)
224
225
226Misc
227----
228
229- GH #644, GH #648
230
231
232Version 2.7.0
233=============
234- Dropped support for Python 2.6 (gh pr #362 by @jdufresne)
235- Dropped support for Python 3.2 (gh pr #626)
236- Updated zoneinfo file to 2018c (gh pr #616)
237- Changed licensing scheme so all new contributions are dual licensed under
238  Apache 2.0 and BSD. (gh pr #542, issue #496)
239- Added __all__ variable to the root package. Reported by @tebriel
240  (gh issue #406), fixed by @mariocj89 (gh pr #494)
241- Added python_requires to setup.py so that pip will distribute the right
242  version of dateutil. Fixed by @jakec-github (gh issue #537, pr #552)
243- Added the utils submodule, for miscellaneous utilities.
244- Added within_delta function to utils - added by @justanr (gh issue #432,
245  gh pr #437)
246- Added today function to utils (gh pr #474)
247- Added default_tzinfo function to utils (gh pr #475), solving an issue
248  reported by @nealmcb (gh issue #94)
249- Added dedicated ISO 8601 parsing function isoparse (gh issue #424).
250  Initial implementation by @pganssle in gh pr #489 and #622, with a
251  pre-release fix by @kirit93 (gh issue #546, gh pr #573).
252- Moved parser module into parser/_parser.py and officially deprecated the use
253  of several private functions and classes from that module. (gh pr #501, #515)
254- Tweaked parser error message to include rejected string format, added by
255  @pbiering (gh pr #300)
256- Add support for parsing bytesarray, reported by @uckelman (gh issue #417) and
257  fixed by @uckelman and @pganssle (gh pr #514)
258- Started raising a warning when the parser finds a timezone string that it
259  cannot construct a tzinfo instance for (rather than succeeding with no
260  indication of an error). Reported and fixed by @jbrockmendel (gh pr #540)
261- Dropped the use of assert in the parser. Fixed by @jbrockmendel (gh pr #502)
262- Fixed to assertion logic in parser to support dates like '2015-15-May',
263  reported and fixed by @jbrockmendel (gh pr #409)
264- Fixed IndexError in parser on dates with trailing colons, reported and fixed
265  by @jbrockmendel (gh pr #420)
266- Fixed bug where hours were not validated, leading to improper parse. Reported
267  by @heappro (gh pr #353), fixed by @jbrockmendel (gh pr #482)
268- Fixed problem parsing strings in %b-%Y-%d format. Reported and fixed by
269  @jbrockmendel (gh pr #481)
270- Fixed problem parsing strings in the %d%B%y format. Reported by @asishm
271  (gh issue #360), fixed by @jbrockmendel (gh pr #483)
272- Fixed problem parsing certain unambiguous strings when year <99 (gh pr #510).
273  Reported by @alexwlchan (gh issue #293).
274- Fixed issue with parsing an unambiguous string representation of an ambiguous
275  datetime such that if possible the correct value for fold is set. Fixes
276  issue reported by @JordonPhillips and @pganssle (gh issue #318, #320,
277  gh pr #517)
278- Fixed issue with improper rounding of fractional components. Reported by
279  @dddmello (gh issue #427), fixed by @m-dz (gh pr #570)
280- Performance improvement to parser from removing certain min() calls. Reported
281  and fixed by @jbrockmendel (gh pr #589)
282- Significantly refactored parser code by @jbrockmendel (gh prs #419, #436,
283  #490, #498, #539) and @pganssle (gh prs #435, #468)
284- Implementated of __hash__ for relativedelta and weekday, reported and fixed
285  by @mrigor (gh pr #389)
286- Implemented __abs__ for relativedelta. Reported by @binnisb and @pferreir
287  (gh issue #350, pr #472)
288- Fixed relativedelta.weeks property getter and setter to work for both
289  negative and positive values. Reported and fixed by @souliane (gh issue #459,
290  pr #460)
291- Fixed issue where passing whole number floats to the months or years
292  arguments of the relativedelta constructor would lead to errors during
293  addition. Reported by @arouanet (gh pr #411), fixed by @lkollar (gh pr #553)
294- Added a pre-built tz.UTC object representing UTC (gh pr #497)
295- Added a cache to tz.gettz so that by default it will return the same object
296  for identical inputs. This will change the semantics of certain operations
297  between datetimes constructed with tzinfo=tz.gettz(...). (gh pr #628)
298- Changed the behavior of tz.tzutc to return a singleton (gh pr #497, #504)
299- Changed the behavior of tz.tzoffset to return the same object when passed the
300  same inputs, with a corresponding performance improvement (gh pr #504)
301- Changed the behavior of tz.tzstr to return the same object when passed the
302  same inputs. (gh pr #628)
303- Added .instance alternate constructors for tz.tzoffset and tz.tzstr, to
304  allow the construction of a new instance if desired. (gh pr #628)
305- Added the tz.gettz.nocache function to allow explicit retrieval of a new
306  instance of the relevant tzinfo. (gh pr #628)
307- Expand definition of tz.tzlocal equality so that the local zone is allow
308  equality with tzoffset and tzutc. (gh pr #598)
309- Deprecated the idiosyncratic tzstr format mentioned in several examples but
310  evidently designed exclusively for dateutil, and very likely not used by
311  any current users. (gh issue #595, gh pr #606)
312- Added the tz.resolve_imaginary function, which generates a real date from
313  an imaginary one, if necessary. Implemented by @Cheukting (gh issue #339,
314  gh pr #607)
315- Fixed issue where the tz.tzstr constructor would erroneously succeed if
316  passed an invalid value for tzstr. Fixed by @pablogsal (gh issue #259,
317  gh pr #581)
318- Fixed issue with tz.gettz for TZ variables that start with a colon. Reported
319  and fixed by @lapointexavier (gh pr #601)
320- Added a lock to tz.tzical's cache. Reported and fixed by @Unrud (gh pr #430)
321- Fixed an issue with fold support on certain Python 3 implementations that
322  used the pre-3.6 pure Python implementation of datetime.replace, most
323  notably pypy3 (gh pr #446).
324- Added support for VALUE=DATE-TIME for DTSTART in rrulestr. Reported by @potuz
325  (gh issue #401) and fixed by @Unrud (gh pr #429)
326- Started enforcing that within VTIMEZONE, the VALUE parameter can only be
327  omitted or DATE-TIME, per RFC 5545. Reported by @Unrud (gh pr #439)
328- Added support for TZID parameter for DTSTART in rrulestr. Reported and
329  fixed by @ryanpetrello (gh issue #614, gh pr #624)
330- Added 'RRULE:' prefix to rrule strings generated by rrule.__str__, in
331  compliance with the RFC. Reported by @AndrewPashkin (gh issue #86), fixed by
332  @jarondl and @mlorant (gh pr #450)
333- Switched to setuptools_scm for version management, automatically calculating
334  a version number from the git metadata. Reported by @jreback (gh issue #511),
335  implemented by @Sulley38 (gh pr #564)
336- Switched setup.py to use find_packages, and started testing against pip
337  installed versions of dateutil in CI. Fixed issue with parser import
338  discovered by @jreback in pandas-dev/pandas#18141. (gh issue #507, pr #509)
339- Switched test suite to using pytest (gh pr #495)
340- Switched CI over to use tox. Fixed by @gaborbernat (gh pr #549)
341- Added a test-only dependency on freezegun. (gh pr #474)
342- Reduced number of CI builds on Appveyor. Fixed by @kirit93 (gh issue #529,
343  gh pr #579)
344- Made xfails strict by default, so that an xpass is a failure. (gh pr #567)
345- Added a documentation generation stage to tox and CI. (gh pr #568)
346- Added an explicit warning when running python setup.py explaining how to run
347  the test suites with pytest. Fixed by @lkollar. (gh issue #544, gh pr #548)
348- Added requirements-dev.txt for test dependency management (gh pr #499, #516)
349- Fixed code coverage metrics to account for Windows builds (gh pr #526)
350- Fixed code coverage metrics to NOT count xfails. Fixed by @gaborbernat
351  (gh issue #519, gh pr #563)
352- Style improvement to zoneinfo.tzfile that was confusing to static type
353  checkers. Reported and fixed by @quodlibetor (gh pr #485)
354- Several unused imports were removed by @jdufresne. (gh pr #486)
355- Switched ``isinstance(*, collections.Callable)`` to callable, which is available
356  on all supported Python versions. Implemented by @jdufresne (gh pr #612)
357- Added CONTRIBUTING.md (gh pr #533)
358- Added AUTHORS.md (gh pr #542)
359- Corrected setup.py metadata to reflect author vs. maintainer, (gh issue #477,
360  gh pr #538)
361- Corrected README to reflect that tests are now run in pytest. Reported and
362  fixed by @m-dz (gh issue #556, gh pr #557)
363- Updated all references to RFC 2445 (iCalendar) to point to RFC 5545. Fixed
364  by @mariocj89 (gh issue #543, gh pr #555)
365- Corrected parse documentation to reflect proper integer offset units,
366  reported and fixed by @abrugh (gh pr #458)
367- Fixed dangling parenthesis in tzoffset documentation (gh pr #461)
368- Started including the license file in wheels. Reported and fixed by
369  @jdufresne (gh pr #476)
370- Indendation fixes to parser docstring by @jbrockmendel (gh pr #492)
371- Moved many examples from the "examples" documentation into their appropriate
372  module documentation pages. Fixed by @Tomasz-Kluczkowski and @jakec-github
373  (gh pr #558, #561)
374- Fixed documentation so that the parser.isoparse documentation displays.
375  Fixed by @alexchamberlain (gh issue #545, gh pr #560)
376- Refactored build and release sections and added setup instructions to
377  CONTRIBUTING. Reported and fixed by @kynan (gh pr #562)
378- Cleaned up various dead links in the documentation. (gh pr #602, #608, #618)
379
380Version 2.6.1
381=============
382- Updated zoneinfo file to 2017b. (gh pr #395)
383- Added Python 3.6 to CI testing (gh pr #365)
384- Removed duplicate test name that was preventing a test from being run.
385  Reported and fixed by @jdufresne (gh pr #371)
386- Fixed testing of folds and gaps, particularly on Windows (gh pr #392)
387- Fixed deprecated escape characters in regular expressions. Reported by
388  @nascheme and @thierryba (gh issue #361), fixed by @thierryba (gh pr #358)
389- Many PEP8 style violations and other code smells were fixed by @jdufresne
390  (gh prs #358, #363, #364, #366, #367, #368, #372, #374, #379, #380, #398)
391- Improved performance of tzutc and tzoffset objects. (gh pr #391)
392- Fixed issue with several time zone classes around DST transitions in any
393  zones with +0 standard offset (e.g. Europe/London) (gh issue #321, pr #390)
394- Fixed issue with fuzzy parsing where tokens similar to AM/PM that are in the
395  end skipped were dropped in the fuzzy_with_tokens list. Reported and fixed
396  by @jbrockmendel (gh pr #332).
397- Fixed issue with parsing dates of the form X m YY. Reported by @jbrockmendel.
398  (gh issue #333, pr #393)
399- Added support for parser weekdays with less than 3 characters. Reported by
400  @arcadefoam (gh issue #343), fixed by @jonemo (gh pr #382)
401- Fixed issue with the addition and subtraction of certain relativedeltas.
402  Reported and fixed by @kootenpv (gh issue #346, pr #347)
403- Fixed issue where the COUNT parameter of rrules was ignored if 0. Fixed by
404  @mshenfield (gh pr #330), reported by @vaultah (gh issue #329).
405- Updated documentation to include the new tz methods. (gh pr #324)
406- Update documentation to reflect that the parser can raise TypeError, reported
407  and fixed by @tomchuk (gh issue #336, pr #337)
408- Fixed an incorrect year in a parser doctest. Fixed by @xlotlu (gh pr #357)
409- Moved version information into _version.py and set up the versions more
410  granularly.
411
412Version 2.6.0
413=============
414- Added PEP-495-compatible methods to address ambiguous and imaginary dates in
415  time zones in a backwards-compatible way. Ambiguous dates and times can now
416  be safely represented by all dateutil time zones. Many thanks to Alexander
417  Belopolski (@abalkin) and Tim Peters @tim-one for their inputs on how to
418  address this. Original issues reported by Yupeng and @zed (lP: 1390262,
419  gh issues #57, #112, #249, #284, #286, prs #127, #225, #248, #264, #302).
420- Added new methods for working with ambiguous and imaginary dates to the tz
421  module. datetime_ambiguous() determines if a datetime is ambiguous for a given
422  zone and datetime_exists() determines if a datetime exists in a given zone.
423  This works for all fold-aware datetimes, not just those provided by dateutil.
424  (gh issue #253, gh pr #302)
425- Fixed an issue where dst() in Portugal in 1996 was returning the wrong value
426  in tz.tzfile objects. Reported by @abalkin (gh issue #128, pr #225)
427- Fixed an issue where zoneinfo.ZoneInfoFile errors were not being properly
428  deep-copied. (gh issue #226, pr #225)
429- Refactored tzwin and tzrange as a subclass of a common class, tzrangebase, as
430  there was substantial overlapping functionality. As part of this change,
431  tzrange and tzstr now expose a transitions() function, which returns the
432  DST on and off transitions for a given year. (gh issue #260, pr #302)
433- Deprecated zoneinfo.gettz() due to confusion with tz.gettz(), in favor of
434  get() method of zoneinfo.ZoneInfoFile objects. (gh issue #11, pr #310)
435- For non-character, non-stream arguments, parser.parse now raises TypeError
436  instead of AttributeError. (gh issues #171, #269, pr #247)
437- Fixed an issue where tzfile objects were not properly handling dst() and
438  tzname() when attached to datetime.time objects. Reported by @ovacephaloid.
439  (gh issue #292, pr #309)
440- /usr/share/lib/zoneinfo was added to TZPATHS for compatibility with Solaris
441  systems. Reported by @dhduvall (gh issue #276, pr #307)
442- tzoffset and tzrange objects now accept either a number of seconds or a
443  datetime.timedelta() object wherever previously only a number of seconds was
444  allowed. (gh pr #264, #277)
445- datetime.timedelta objects can now be added to relativedelta objects. Reported
446  and added by Alec Nikolas Reiter (@justanr) (gh issue #282, pr #283
447- Refactored relativedelta.weekday and rrule.weekday into a common base class
448  to reduce code duplication. (gh issue #140, pr #311)
449- An issue where the WKST parameter was improperly rendering in str(rrule) was
450  reported and fixed by Daniel LePage (@dplepage). (gh issue #262, pr #263)
451- A replace() method has been added to rrule objects by @jendas1, which creates
452  new rrule with modified attributes, analogous to datetime.replace (gh pr #167)
453- Made some significant performance improvements to rrule objects in Python 2.x
454  (gh pr #245)
455- All classes defining equality functions now return NotImplemented when
456  compared to unsupported classes, rather than raising TypeError, to allow other
457  classes to provide fallback support. (gh pr #236)
458- Several classes have been marked as explicitly unhashable to maintain
459  identical behavior between Python 2 and 3. Submitted by Roy Williams
460  (@rowillia) (gh pr #296)
461- Trailing whitespace in easter.py has been removed. Submitted by @OmgImAlexis
462  (gh pr #299)
463- Windows-only batch files in build scripts had line endings switched to CRLF.
464  (gh pr #237)
465- @adamchainz updated the documentation links to reflect that the canonical
466  location for readthedocs links is now at .io, not .org. (gh pr #272)
467- Made some changes to the CI and codecov to test against newer versions of
468  Python and pypy, and to adjust the code coverage requirements. For the moment,
469  full pypy3 compatibility is not supported until a new release is available,
470  due to upstream bugs in the old version affecting PEP-495 support.
471  (gh prs #265, #266, #304, #308)
472- The full PGP signing key fingerprint was added to the README.md in favor of
473  the previously used long-id. Reported by @valholl (gh issue #287, pr #304)
474- Updated zoneinfo to 2016i. (gh issue #298, gh pr #306)
475
476
477Version 2.5.3
478=============
479- Updated zoneinfo to 2016d
480- Fixed parser bug where unambiguous datetimes fail to parse when dayfirst is
481  set to true. (gh issue #233, pr #234)
482- Bug in zoneinfo file on platforms such as Google App Engine which do not
483  do not allow importing of subprocess.check_call was reported and fixed by
484  @savraj (gh issue #239, gh pr #240)
485- Fixed incorrect version in documentation (gh issue #235, pr #243)
486
487Version 2.5.2
488=============
489- Updated zoneinfo to 2016c
490- Fixed parser bug where yearfirst and dayfirst parameters were not being
491  respected when no separator was present. (gh issue #81 and #217, pr #229)
492
493Version 2.5.1
494=============
495- Updated zoneinfo to 2016b
496- Changed MANIFEST.in to explicitly include test suite in source distributions,
497  with help from @koobs (gh issue #193, pr #194, #201, #221)
498- Explicitly set all line-endings to LF, except for the NEWS file, on a
499  per-repository basis (gh pr #218)
500- Fixed an issue with improper caching behavior in rruleset objects (gh issue
501  #104, pr #207)
502- Changed to an explicit error when rrulestr strings contain a missing BYDAY
503  (gh issue #162, pr #211)
504- tzfile now correctly handles files containing leapcnt (although the leapcnt
505  information is not actually used). Contributed by @hjoukl (gh issue #146, pr
506  #147)
507- Fixed recursive import issue with tz module (gh pr #204)
508- Added compatibility between tzwin objects and datetime.time objects (gh issue
509  #216, gh pr #219)
510- Refactored monolithic test suite by module (gh issue #61, pr #200 and #206)
511- Improved test coverage in the relativedelta module (gh pr #215)
512- Adjusted documentation to reflect possibly counter-intuitive properties of
513  RFC-5545-compliant rrules, and other documentation improvements in the rrule
514  module (gh issue #105, gh issue #149 - pointer to the solution by @phep,
515  pr #213).
516
517
518Version 2.5.0
519=============
520- Updated zoneinfo to 2016a
521- zoneinfo_metadata file version increased to 2.0 - the updated updatezinfo.py
522  script will work with older zoneinfo_metadata.json files, but new metadata
523  files will not work with older updatezinfo.py versions. Additionally, we have
524  started hosting our own mirror of the Olson databases on a github pages
525  site (https://dateutil.github.io/tzdata/) (gh pr #183)
526- dateutil zoneinfo tarballs now contain the full zoneinfo_metadata file used
527  to generate them. (gh issue #27, gh pr #85)
528- relativedelta can now be safely subclassed without derived objects reverting
529  to base relativedelta objects as a result of arithmetic operations.
530  (lp:1010199, gh issue #44, pr #49)
531- relativedelta 'weeks' parameter can now be set and retrieved as a property of
532  relativedelta instances. (lp: 727525, gh issue #45, pr #49)
533- relativedelta now explicitly supports fractional relative weeks, days, hours,
534  minutes and seconds. Fractional values in absolute parameters (year, day, etc)
535  are now deprecated. (gh issue #40, pr #190)
536- relativedelta objects previously did not use microseconds to determine of two
537  relativedelta objects were equal. This oversight has been corrected.
538  Contributed by @elprans (gh pr #113)
539- rrule now has an xafter() method for retrieving multiple recurrences after a
540  specified date. (gh pr #38)
541- str(rrule) now returns an RFC2445-compliant rrule string, contributed by
542  @schinckel and @armicron (lp:1406305, gh issue #47, prs #50, #62 and #160)
543- rrule performance under certain conditions has been significantly improved
544  thanks to a patch contributed by @dekoza, based on an article by Brian Beck
545  (@exogen) (gh pr #136)
546- The use of both the 'until' and 'count' parameters is now deprecated as
547  inconsistent with RFC2445 (gh pr #62, #185)
548- Parsing an empty string will now raise a ValueError, rather than returning the
549  datetime passed to the 'default' parameter. (gh issue #78, pr #187)
550- tzwinlocal objects now have a meaningful repr() and str() implementation
551  (gh issue #148, prs #184 and #186)
552- Added equality logic for tzwin and tzwinlocal objects. (gh issue #151,
553  pr #180, #184)
554- Added some flexibility in subclassing timelex, and switched the default
555  behavior over to using string methods rather than comparing against a fixed
556  list. (gh pr #122, #139)
557- An issue causing tzstr() to crash on Python 2.x was fixed. (lp: 1331576,
558  gh issue #51, pr #55)
559- An issue with string encoding causing exceptions under certain circumstances
560  when tzname() is called was fixed. (gh issue #60, #74, pr #75)
561- Parser issue where calling parse() on dates with no day specified when the
562  day of the month in the default datetime (which is "today" if unspecified) is
563  greater than the number of days in the parsed month was fixed (this issue
564  tended to crop up between the 29th and 31st of the month, for obvious reasons)
565  (canonical gh issue #25, pr #30, #191)
566- Fixed parser issue causing fuzzy_with_tokens to raise an unexpected exception
567  in certain circumstances. Contributed by @MichaelAquilina (gh pr #91)
568- Fixed parser issue where years > 100 AD were incorrectly parsed. Contributed
569  by @Bachmann1234 (gh pr #130)
570- Fixed parser issue where commas were not a valid separator between seconds
571  and microseconds, preventing parsing of ISO 8601 dates. Contributed by
572  @ryanss (gh issue #28, pr #106)
573- Fixed issue with tzwin encoding in locales with non-Latin alphabets
574  (gh issue #92, pr #98)
575- Fixed an issue where tzwin was not being properly imported on Windows.
576  Contributed by @labrys. (gh pr #134)
577- Fixed a problem causing issues importing zoneinfo in certain circumstances.
578  Issue and solution contributed by @alexxv (gh issue #97, pr #99)
579- Fixed an issue where dateutil timezones were not compatible with basic time
580  objects. One of many, many timezone related issues contributed and tested by
581  @labrys. (gh issue #132, pr #181)
582- Fixed issue where tzwinlocal had an invalid utcoffset. (gh issue #135,
583  pr #141, #142)
584- Fixed issue with tzwin and tzwinlocal where DST transitions were incorrectly
585  parsed from the registry. (gh issue #143, pr #178)
586- updatezinfo.py no longer suppresses certain OSErrors. Contributed by @bjamesv
587  (gh pr #164)
588- An issue that arose when timezone locale changes during runtime has been
589  fixed by @carlosxl and @mjschultz (gh issue #100, prs #107, #109)
590- Python 3.5 was added to the supported platforms in the metadata (@tacaswell
591  gh pr #159) and the test suites (@moreati gh pr #117).
592- An issue with tox failing without unittest2 installed in Python 2.6 was fixed
593  by @moreati (gh pr #115)
594- Several deprecated functions were replaced in the tests by @moreati
595  (gh pr #116)
596- Improved the logic in Travis and Appveyor to alleviate issues where builds
597  were failing due to connection issues when downloading the IANA timezone
598  files. In addition to adding our own mirror for the files (gh pr #183), the
599  download is now retried a number of times (with a delay) (gh pr #177)
600- Many failing doctests were fixed by @moreati. (gh pr #120)
601- Many fixes to the documentation (gh pr #103, gh pr #87 from @radarhere,
602  gh pr #154 from @gpoesia, gh pr #156 from @awsum, gh pr #168 from @ja8zyjits)
603- Added a code coverage tool to the CI to help improve the library. (gh pr #182)
604- We now have a mailing list - dateutil@python.org, graciously hosted by
605  Python.org.
606
607
608Version 2.4.2
609=============
610- Updated zoneinfo to 2015b.
611- Fixed issue with parsing of tzstr on Python 2.7.x; tzstr will now be decoded
612  if not a unicode type. gh #51 (lp:1331576), gh pr #55.
613- Fix a parser issue where AM and PM tokens were showing up in fuzzy date
614  stamps, triggering inappropriate errors. gh #56 (lp: 1428895), gh pr #63.
615- Missing function "setcachesize" removed from zoneinfo __all__ list by @ryanss,
616  fixing an issue with wildcard imports of dateutil.zoneinfo. (gh pr #66).
617- (PyPI only) Fix an issue with source distributions not including the test
618  suite.
619
620
621Version 2.4.1
622=============
623
624- Added explicit check for valid hours if AM/PM is specified in parser.
625  (gh pr #22, issue #21)
626- Fix bug in rrule introduced in 2.4.0 where byweekday parameter was not
627  handled properly. (gh pr #35, issue #34)
628- Fix error where parser allowed some invalid dates, overwriting existing hours
629  with the last 2-digit number in the string. (gh pr #32, issue #31)
630- Fix and add test for Python 2.x compatibility with boolean checking of
631  relativedelta objects. Implemented by @nimasmi (gh pr #43) and Cédric Krier
632  (lp: 1035038)
633- Replaced parse() calls with explicit datetime objects in unit tests unrelated
634  to parser. (gh pr #36)
635- Changed private _byxxx from sets to sorted tuples and fixed one currently
636  unreachable bug in _construct_byset. (gh pr #54)
637- Additional documentation for parser (gh pr #29, #33, #41) and rrule.
638- Formatting fixes to documentation of rrule and README.rst.
639- Updated zoneinfo to 2015a.
640
641Version 2.4.0
642=============
643
644- Fix an issue with relativedelta and freezegun (lp:1374022)
645- Fix tzinfo in windows for timezones without dst (lp:1010050, gh #2)
646- Ignore missing timezones in windows like in POSIX
647- Fix minimal version requirement for six (gh #6)
648- Many rrule changes and fixes by @pganssle (gh pull requests #13 #14 #17),
649    including defusing some infinite loops (gh #4)
650
651Version 2.3
652===========
653
654- Cleanup directory structure, moved test.py to dateutil/tests/test.py
655
656- Changed many aspects of dealing with the zone info file. Instead of a cache,
657  all the zones are loaded to memory, but symbolic links are loaded only once,
658  so not much memory is used.
659
660- The package is now zip-safe, and universal-wheelable, thanks to changes in
661  the handling of the zoneinfo file.
662
663- Fixed tzwin silently not imported on windows python2
664
665- New maintainer, together with new hosting: GitHub, Travis, Read-The-Docs
666
667Version 2.2
668===========
669
670- Updated zoneinfo to 2013h
671
672- fuzzy_with_tokens parse addon from Christopher Corley
673
674- Bug with LANG=C fixed by Mike Gilbert
675
676Version 2.1
677===========
678
679- New maintainer
680
681- Dateutil now works on Python 2.6, 2.7 and 3.2 from same codebase (with six)
682
683- #704047: Ismael Carnales' patch for a new time format
684
685- Small bug fixes, thanks for reporters!
686
687
688Version 2.0
689===========
690
691- Ported to Python 3, by Brian Jones.  If you need dateutil for Python 2.X,
692  please continue using the 1.X series.
693
694- There's no such thing as a "PSF License".  This source code is now
695  made available under the Simplified BSD license.  See LICENSE for
696  details.
697
698Version 1.5
699===========
700
701- As reported by Mathieu Bridon, rrules were matching the bysecond rules
702  incorrectly against byminute in some circumstances when the SECONDLY
703  frequency was in use, due to a copy & paste bug.  The problem has been
704  unittested and corrected.
705
706- Adam Ryan reported a problem in the relativedelta implementation which
707  affected the yearday parameter in the month of January specifically.
708  This has been unittested and fixed.
709
710- Updated timezone information.
711
712
713Version 1.4.1
714=============
715
716- Updated timezone information.
717
718
719Version 1.4
720===========
721
722- Fixed another parser precision problem on conversion of decimal seconds
723  to microseconds, as reported by Erik Brown.  Now these issues are gone
724  for real since it's not using floating point arithmetic anymore.
725
726- Fixed case where tzrange.utcoffset and tzrange.dst() might fail due
727  to a date being used where a datetime was expected (reported and fixed
728  by Lennart Regebro).
729
730- Prevent tzstr from introducing daylight timings in strings that didn't
731  specify them (reported by Lennart Regebro).
732
733- Calls like gettz("GMT+3") and gettz("UTC-2") will now return the
734  expected values, instead of the TZ variable behavior.
735
736- Fixed DST signal handling in zoneinfo files.  Reported by
737  Nicholas F. Fabry and John-Mark Gurney.
738
739
740Version 1.3
741===========
742
743- Fixed precision problem on conversion of decimal seconds to
744  microseconds, as reported by Skip Montanaro.
745
746- Fixed bug in constructor of parser, and converted parser classes to
747  new-style classes.  Original report and patch by Michael Elsdörfer.
748
749- Initialize tzid and comps in tz.py, to prevent the code from ever
750  raising a NameError (even with broken files).  Johan Dahlin suggested
751  the fix after a pyflakes run.
752
753- Version is now published in dateutil.__version__, as requested
754  by Darren Dale.
755
756- All code is compatible with new-style division.
757
758
759Version 1.2
760===========
761
762- Now tzfile will round timezones to full-minutes if necessary,
763  since Python's datetime doesn't support sub-minute offsets.
764  Thanks to Ilpo Nyyssönen for reporting the issue.
765
766- Removed bare string exceptions, as reported and fixed by
767  Wilfredo Sánchez Vega.
768
769- Fix bug in leap count parsing (reported and fixed by Eugene Oden).
770
771
772Version 1.1
773===========
774
775- Fixed rrule byyearday handling. Abramo Bagnara pointed out that
776  RFC2445 allows negative numbers.
777
778- Fixed --prefix handling in setup.py (by Sidnei da Silva).
779
780- Now tz.gettz() returns a tzlocal instance when not given any
781  arguments and no other timezone information is found.
782
783- Updating timezone information to version 2005q.
784
785
786Version 1.0
787===========
788
789- Fixed parsing of XXhXXm formatted time after day/month/year
790  has been parsed.
791
792- Added patch by Jeffrey Harris optimizing rrule.__contains__.
793
794
795Version 0.9
796===========
797
798- Fixed pickling of timezone types, as reported by
799  Andreas Köhler.
800
801- Implemented internal timezone information with binary
802  timezone files. datautil.tz.gettz() function will now
803  try to use the system timezone files, and fallback to
804  the internal versions. It's also possible to ask for
805  the internal versions directly by using
806  dateutil.zoneinfo.gettz().
807
808- New tzwin timezone type, allowing access to Windows
809  internal timezones (contributed by Jeffrey Harris).
810
811- Fixed parsing of unicode date strings.
812
813- Accept parserinfo instances as the parser constructor
814  parameter, besides parserinfo (sub)classes.
815
816- Changed weekday to spell the not-set n value as None
817  instead of 0.
818
819- Fixed other reported bugs.
820
821
822Version 0.5
823===========
824
825- Removed ``FREQ_`` prefix from rrule frequency constants
826  WARNING: this breaks compatibility with previous versions.
827
828- Fixed rrule.between() for cases where "after" is achieved
829  before even starting, as reported by Andreas Köhler.
830
831- Fixed two digit zero-year parsing (such as 31-Dec-00), as
832  reported by Jim Abramson, and included test case for this.
833
834- Sort exdate and rdate before iterating over them, so that
835  it's not necessary to sort them before adding to the rruleset,
836  as reported by Nicholas Piper.
837