blob: dd39b01bc9a190b63ef9e8b5c4f85fde08177597 [file] [log] [blame]
Jon Dufresne2e7b4c22017-04-16 21:40:56 -07001UNRELEASED
2----------
3- **Dropped support for Python 2.6.**
4
Paul Ganssle9862bfe2017-07-10 14:01:28 -04005Version 2.6.1
6-------------
7- Updated zoneinfo file to 2017b. (gh pr #395)
8- Added Python 3.6 to CI testing (gh pr #365)
9- Removed duplicate test name that was preventing a test from being run.
10 Reported and fixed by @jdufresne (gh pr #371)
11- Fixed testing of folds and gaps, particularly on Windows (gh pr #392)
12- Fixed deprecated escape characters in regular expressions. Reported by
13 @nascheme and @thierryba (gh issue #361), fixed by @thierryba (gh pr #358)
14- Many PEP8 style violations and other code smells were fixed by @jdufresne
15 (gh prs #358, #363, #364, #366, #367, #368, #372, #374, #379, #380, #398)
16- Improved performance of tzutc and tzoffset objects. (gh pr #391)
17- Fixed issue with several time zone classes around DST transitions in any
18 zones with +0 standard offset (e.g. Europe/London) (gh issue #321, pr #390)
19- Fixed issue with fuzzy parsing where tokens similar to AM/PM that are in the
20 end skipped were dropped in the fuzzy_with_tokens list. Reported and fixed
21 by @jbrockmendel (gh pr #332).
22- Fixed issue with parsing dates of the form X m YY. Reported by @jbrockmendel.
23 (gh issue #333, pr #393)
24- Added support for parser weekdays with less than 3 characters. Reported by
25 @arcadefoam (gh issue #343), fixed by @jonemo (gh pr #382)
26- Fixed issue with the addition and subtraction of certain relativedeltas.
27 Reported and fixed by @kootenpv (gh issue #346, pr #347)
28- Fixed issue where the COUNT parameter of rrules was ignored if 0. Fixed by
29 @mshenfield (gh pr #330), reported by @vaultah (gh issue #329).
30- Updated documentation to include the new tz methods. (gh pr #324)
31- Update documentation to reflect that the parser can raise TypeError, reported
32 and fixed by @tomchuk (gh issue #336, pr #337)
33- Fixed an incorrect year in a parser doctest. Fixed by @xlotlu (gh pr #357)
34- Moved version information into _version.py and set up the versions more
35 granularly.
36
Paul Ganssle418b8ae2016-11-06 20:54:45 -050037Version 2.6.0
38-------------
39- Added PEP-495-compatible methods to address ambiguous and imaginary dates in
40 time zones in a backwards-compatible way. Ambiguous dates and times can now
41 be safely represented by all dateutil time zones. Many thanks to Alexander
42 Belopolski (@abalkin) and Tim Peters @tim-one for their inputs on how to
43 address this. Original issues reported by Yupeng and @zed (lP: 1390262,
44 gh issues #57, #112, #249, #284, #286, prs #127, #225, #248, #264, #302).
45- Added new methods for working with ambiguous and imaginary dates to the tz
46 module. datetime_ambiguous() determines if a datetime is ambiguous for a given
47 zone and datetime_exists() determines if a datetime exists in a given zone.
48 This works for all fold-aware datetimes, not just those provided by dateutil.
49 (gh issue #253, gh pr #302)
50- Fixed an issue where dst() in Portugal in 1996 was returning the wrong value
51 in tz.tzfile objects. Reported by @abalkin (gh issue #128, pr #225)
52- Fixed an issue where zoneinfo.ZoneInfoFile errors were not being properly
53 deep-copied. (gh issue #226, pr #225)
54- Refactored tzwin and tzrange as a subclass of a common class, tzrangebase, as
55 there was substantial overlapping functionality. As part of this change,
56 tzrange and tzstr now expose a transitions() function, which returns the
57 DST on and off transitions for a given year. (gh issue #260, pr #302)
58- Deprecated zoneinfo.gettz() due to confusion with tz.gettz(), in favor of
59 get() method of zoneinfo.ZoneInfoFile objects. (gh issue #11, pr #310)
60- For non-character, non-stream arguments, parser.parse now raises TypeError
61 instead of AttributeError. (gh issues #171, #269, pr #247)
62- Fixed an issue where tzfile objects were not properly handling dst() and
63 tzname() when attached to datetime.time objects. Reported by @ovacephaloid.
64 (gh issue #292, pr #309)
65- /usr/share/lib/zoneinfo was added to TZPATHS for compatibility with Solaris
66 systems. Reported by @dhduvall (gh issue #276, pr #307)
67- tzoffset and tzrange objects now accept either a number of seconds or a
68 datetime.timedelta() object wherever previously only a number of seconds was
69 allowed. (gh pr #264, #277)
70- datetime.timedelta objects can now be added to relativedelta objects. Reported
71 and added by Alec Nikolas Reiter (@justanr) (gh issue #282, pr #283
72- Refactored relativedelta.weekday and rrule.weekday into a common base class
73 to reduce code duplication. (gh issue #140, pr #311)
74- An issue where the WKST parameter was improperly rendering in str(rrule) was
75 reported and fixed by Daniel LePage (@dplepage). (gh issue #262, pr #263)
76- A replace() method has been added to rrule objects by @jendas1, which creates
77 new rrule with modified attributes, analogous to datetime.replace (gh pr #167)
78- Made some significant performance improvements to rrule objects in Python 2.x
79 (gh pr #245)
80- All classes defining equality functions now return NotImplemented when
81 compared to unsupported classes, rather than raising TypeError, to allow other
82 classes to provide fallback support. (gh pr #236)
83- Several classes have been marked as explicitly unhashable to maintain
Jon Dufresne38232aa2017-04-16 22:03:43 -070084 identical behavior between Python 2 and 3. Submitted by Roy Williams
Paul Ganssle418b8ae2016-11-06 20:54:45 -050085 (@rowillia) (gh pr #296)
86- Trailing whitespace in easter.py has been removed. Submitted by @OmgImAlexis
87 (gh pr #299)
88- Windows-only batch files in build scripts had line endings switched to CRLF.
89 (gh pr #237)
90- @adamchainz updated the documentation links to reflect that the canonical
91 location for readthedocs links is now at .io, not .org. (gh pr #272)
92- Made some changes to the CI and codecov to test against newer versions of
93 Python and pypy, and to adjust the code coverage requirements. For the moment,
94 full pypy3 compatibility is not supported until a new release is available,
95 due to upstream bugs in the old version affecting PEP-495 support.
96 (gh prs #265, #266, #304, #308)
97- The full PGP signing key fingerprint was added to the README.md in favor of
98 the previously used long-id. Reported by @valholl (gh issue #287, pr #304)
99- Updated zoneinfo to 2016i. (gh issue #298, gh pr #306)
100
101
Paul Ganssleda1435e2016-04-20 21:07:52 -0400102Version 2.5.3
103-------------
104- Updated zoneinfo to 2016d
105- Fixed parser bug where unambiguous datetimes fail to parse when dayfirst is
106 set to true. (gh issue #233, pr #234)
107- Bug in zoneinfo file on platforms such as Google App Engine which do not
108 do not allow importing of subprocess.check_call was reported and fixed by
109 @savraj (gh issue #239, gh pr #240)
110- Fixed incorrect version in documentation (gh issue #235, pr #243)
111
Paul Gansslec778dd12016-03-27 11:47:46 -0400112Version 2.5.2
113-------------
114- Updated zoneinfo to 2016c
115- Fixed parser bug where yearfirst and dayfirst parameters were not being
116 respected when no separator was present. (gh issue #81 and #217, pr #229)
117
Paul Ganssle66f29ba2016-03-17 12:49:09 -0400118Version 2.5.1
119-------------
120- Updated zoneinfo to 2016b
121- Changed MANIFEST.in to explicitly include test suite in source distributions,
122 with help from @koobs (gh issue #193, pr #194, #201, #221)
123- Explicitly set all line-endings to LF, except for the NEWS file, on a
124 per-repository basis (gh pr #218)
125- Fixed an issue with improper caching behavior in rruleset objects (gh issue
126 #104, pr #207)
127- Changed to an explicit error when rrulestr strings contain a missing BYDAY
128 (gh issue #162, pr #211)
129- tzfile now correctly handles files containing leapcnt (although the leapcnt
130 information is not actually used). Contributed by @hjoukl (gh issue #146, pr
131 #147)
132- Fixed recursive import issue with tz module (gh pr #204)
133- Added compatibility between tzwin objects and datetime.time objects (gh issue
134 #216, gh pr #219)
135- Refactored monolithic test suite by module (gh issue #61, pr #200 and #206)
136- Improved test coverage in the relativedelta module (gh pr #215)
137- Adjusted documentation to reflect possibly counter-intuitive properties of
138 RFC-5545-compliant rrules, and other documentation improvements in the rrule
139 module (gh issue #105, gh issue #149 - pointer to the solution by @phep,
140 pr #213).
141
142
Zbigniew Jędrzejewski-Szmek8ef32342016-02-28 20:05:09 -0500143Version 2.5.0
144-------------
145- Updated zoneinfo to 2016a
146- zoneinfo_metadata file version increased to 2.0 - the updated updatezinfo.py
147 script will work with older zoneinfo_metadata.json files, but new metadata
148 files will not work with older updatezinfo.py versions. Additionally, we have
149 started hosting our own mirror of the Olson databases on a github pages
150 site (https://dateutil.github.io/tzdata/) (gh pr #183)
151- dateutil zoneinfo tarballs now contain the full zoneinfo_metadata file used
152 to generate them. (gh issue #27, gh pr #85)
153- relativedelta can now be safely subclassed without derived objects reverting
154 to base relativedelta objects as a result of arithmetic operations.
155 (lp:1010199, gh issue #44, pr #49)
156- relativedelta 'weeks' parameter can now be set and retrieved as a property of
157 relativedelta instances. (lp: 727525, gh issue #45, pr #49)
158- relativedelta now explicitly supports fractional relative weeks, days, hours,
159 minutes and seconds. Fractional values in absolute parameters (year, day, etc)
160 are now deprecated. (gh issue #40, pr #190)
161- relativedelta objects previously did not use microseconds to determine of two
162 relativedelta objects were equal. This oversight has been corrected.
163 Contributed by @elprans (gh pr #113)
164- rrule now has an xafter() method for retrieving multiple recurrences after a
165 specified date. (gh pr #38)
166- str(rrule) now returns an RFC2445-compliant rrule string, contributed by
167 @schinckel and @armicron (lp:1406305, gh issue #47, prs #50, #62 and #160)
168- rrule performance under certain conditions has been significantly improved
169 thanks to a patch contributed by @dekoza, based on an article by Brian Beck
170 (@exogen) (gh pr #136)
171- The use of both the 'until' and 'count' parameters is now deprecated as
172 inconsistent with RFC2445 (gh pr #62, #185)
173- Parsing an empty string will now raise a ValueError, rather than returning the
174 datetime passed to the 'default' parameter. (gh issue #78, pr #187)
175- tzwinlocal objects now have a meaningful repr() and str() implementation
176 (gh issue #148, prs #184 and #186)
177- Added equality logic for tzwin and tzwinlocal objects. (gh issue #151,
178 pr #180, #184)
179- Added some flexibility in subclassing timelex, and switched the default
180 behavior over to using string methods rather than comparing against a fixed
181 list. (gh pr #122, #139)
182- An issue causing tzstr() to crash on Python 2.x was fixed. (lp: 1331576,
183 gh issue #51, pr #55)
184- An issue with string encoding causing exceptions under certain circumstances
185 when tzname() is called was fixed. (gh issue #60, #74, pr #75)
186- Parser issue where calling parse() on dates with no day specified when the
187 day of the month in the default datetime (which is "today" if unspecified) is
188 greater than the number of days in the parsed month was fixed (this issue
189 tended to crop up between the 29th and 31st of the month, for obvious reasons)
190 (canonical gh issue #25, pr #30, #191)
191- Fixed parser issue causing fuzzy_with_tokens to raise an unexpected exception
192 in certain circumstances. Contributed by @MichaelAquilina (gh pr #91)
193- Fixed parser issue where years > 100 AD were incorrectly parsed. Contributed
194 by @Bachmann1234 (gh pr #130)
195- Fixed parser issue where commas were not a valid separator between seconds
196 and microseconds, preventing parsing of ISO 8601 dates. Contributed by
197 @ryanss (gh issue #28, pr #106)
198- Fixed issue with tzwin encoding in locales with non-Latin alphabets
199 (gh issue #92, pr #98)
200- Fixed an issue where tzwin was not being properly imported on Windows.
201 Contributed by @labrys. (gh pr #134)
202- Fixed a problem causing issues importing zoneinfo in certain circumstances.
203 Issue and solution contributed by @alexxv (gh issue #97, pr #99)
204- Fixed an issue where dateutil timezones were not compatible with basic time
205 objects. One of many, many timezone related issues contributed and tested by
206 @labrys. (gh issue #132, pr #181)
207- Fixed issue where tzwinlocal had an invalid utcoffset. (gh issue #135,
208 pr #141, #142)
209- Fixed issue with tzwin and tzwinlocal where DST transitions were incorrectly
210 parsed from the registry. (gh issue #143, pr #178)
211- updatezinfo.py no longer suppresses certain OSErrors. Contributed by @bjamesv
212 (gh pr #164)
213- An issue that arose when timezone locale changes during runtime has been
214 fixed by @carlosxl and @mjschultz (gh issue #100, prs #107, #109)
215- Python 3.5 was added to the supported platforms in the metadata (@tacaswell
216 gh pr #159) and the test suites (@moreati gh pr #117).
217- An issue with tox failing without unittest2 installed in Python 2.6 was fixed
218 by @moreati (gh pr #115)
219- Several deprecated functions were replaced in the tests by @moreati
220 (gh pr #116)
221- Improved the logic in Travis and Appveyor to alleviate issues where builds
222 were failing due to connection issues when downloading the IANA timezone
223 files. In addition to adding our own mirror for the files (gh pr #183), the
224 download is now retried a number of times (with a delay) (gh pr #177)
225- Many failing doctests were fixed by @moreati. (gh pr #120)
226- Many fixes to the documentation (gh pr #103, gh pr #87 from @radarhere,
227 gh pr #154 from @gpoesia, gh pr #156 from @awsum, gh pr #168 from @ja8zyjits)
228- Added a code coverage tool to the CI to help improve the library. (gh pr #182)
229- We now have a mailing list - dateutil@python.org, graciously hosted by
230 Python.org.
231
232
233Version 2.4.2
234-------------
235- Updated zoneinfo to 2015b.
236- Fixed issue with parsing of tzstr on Python 2.7.x; tzstr will now be decoded
237 if not a unicode type. gh #51 (lp:1331576), gh pr #55.
238- Fix a parser issue where AM and PM tokens were showing up in fuzzy date
239 stamps, triggering inappropriate errors. gh #56 (lp: 1428895), gh pr #63.
240- Missing function "setcachesize" removed from zoneinfo __all__ list by @ryanss,
241 fixing an issue with wildcard imports of dateutil.zoneinfo. (gh pr #66).
242- (PyPi only) Fix an issue with source distributions not including the test
243 suite.
244
245
246Version 2.4.1
247-------------
248
249- Added explicit check for valid hours if AM/PM is specified in parser.
250 (gh pr #22, issue #21)
251- Fix bug in rrule introduced in 2.4.0 where byweekday parameter was not
252 handled properly. (gh pr #35, issue #34)
253- Fix error where parser allowed some invalid dates, overwriting existing hours
254 with the last 2-digit number in the string. (gh pr #32, issue #31)
255- Fix and add test for Python 2.x compatibility with boolean checking of
256 relativedelta objects. Implemented by @nimasmi (gh pr #43) and Cédric Krier
257 (lp: 1035038)
258- Replaced parse() calls with explicit datetime objects in unit tests unrelated
259 to parser. (gh pr #36)
260- Changed private _byxxx from sets to sorted tuples and fixed one currently
261 unreachable bug in _construct_byset. (gh pr #54)
262- Additional documentation for parser (gh pr #29, #33, #41) and rrule.
263- Formatting fixes to documentation of rrule and README.rst.
264- Updated zoneinfo to 2015a.
265
266Version 2.4.0
267-------------
268
269- Fix an issue with relativedelta and freezegun (lp:1374022)
270- Fix tzinfo in windows for timezones without dst (lp:1010050, gh #2)
271- Ignore missing timezones in windows like in POSIX
272- Fix minimal version requirement for six (gh #6)
273- Many rrule changes and fixes by @pganssle (gh pull requests #13 #14 #17),
274 including defusing some infinite loops (gh #4)
275
276Version 2.3
277-----------
278
279- Cleanup directory structure, moved test.py to dateutil/tests/test.py
280
281- Changed many aspects of dealing with the zone info file. Instead of a cache,
282 all the zones are loaded to memory, but symbolic links are loaded only once,
283 so not much memory is used.
284
285- The package is now zip-safe, and universal-wheelable, thanks to changes in
286 the handling of the zoneinfo file.
287
288- Fixed tzwin silently not imported on windows python2
289
290- New maintainer, together with new hosting: GitHub, Travis, Read-The-Docs
291
292Version 2.2
293-----------
294
295- Updated zoneinfo to 2013h
296
297- fuzzy_with_tokens parse addon from Christopher Corley
298
299- Bug with LANG=C fixed by Mike Gilbert
300
301Version 2.1
302-----------
303
304- New maintainer
305
306- Dateutil now works on Python 2.6, 2.7 and 3.2 from same codebase (with six)
307
308- #704047: Ismael Carnales' patch for a new time format
309
310- Small bug fixes, thanks for reporters!
311
312
313Version 2.0
314-----------
315
316- Ported to Python 3, by Brian Jones. If you need dateutil for Python 2.X,
317 please continue using the 1.X series.
318
319- There's no such thing as a "PSF License". This source code is now
320 made available under the Simplified BSD license. See LICENSE for
321 details.
322
323Version 1.5
324-----------
325
326- As reported by Mathieu Bridon, rrules were matching the bysecond rules
327 incorrectly against byminute in some circumstances when the SECONDLY
328 frequency was in use, due to a copy & paste bug. The problem has been
329 unittested and corrected.
330
331- Adam Ryan reported a problem in the relativedelta implementation which
332 affected the yearday parameter in the month of January specifically.
333 This has been unittested and fixed.
334
335- Updated timezone information.
336
337
338Version 1.4.1
339-------------
340
341- Updated timezone information.
342
343
344Version 1.4
345-----------
346
347- Fixed another parser precision problem on conversion of decimal seconds
348 to microseconds, as reported by Erik Brown. Now these issues are gone
349 for real since it's not using floating point arithmetic anymore.
350
351- Fixed case where tzrange.utcoffset and tzrange.dst() might fail due
352 to a date being used where a datetime was expected (reported and fixed
353 by Lennart Regebro).
354
355- Prevent tzstr from introducing daylight timings in strings that didn't
356 specify them (reported by Lennart Regebro).
357
358- Calls like gettz("GMT+3") and gettz("UTC-2") will now return the
359 expected values, instead of the TZ variable behavior.
360
361- Fixed DST signal handling in zoneinfo files. Reported by
362 Nicholas F. Fabry and John-Mark Gurney.
363
364
365Version 1.3
366-----------
367
368- Fixed precision problem on conversion of decimal seconds to
369 microseconds, as reported by Skip Montanaro.
370
371- Fixed bug in constructor of parser, and converted parser classes to
372 new-style classes. Original report and patch by Michael Elsdörfer.
373
374- Initialize tzid and comps in tz.py, to prevent the code from ever
375 raising a NameError (even with broken files). Johan Dahlin suggested
376 the fix after a pyflakes run.
377
378- Version is now published in dateutil.__version__, as requested
379 by Darren Dale.
380
381- All code is compatible with new-style division.
382
383
384Version 1.2
385-----------
386
387- Now tzfile will round timezones to full-minutes if necessary,
388 since Python's datetime doesn't support sub-minute offsets.
389 Thanks to Ilpo Nyyssönen for reporting the issue.
390
391- Removed bare string exceptions, as reported and fixed by
392 Wilfredo Sánchez Vega.
393
394- Fix bug in leap count parsing (reported and fixed by Eugene Oden).
395
396
397Version 1.1
398-----------
399
400- Fixed rrule byyearday handling. Abramo Bagnara pointed out that
401 RFC2445 allows negative numbers.
402
403- Fixed --prefix handling in setup.py (by Sidnei da Silva).
404
405- Now tz.gettz() returns a tzlocal instance when not given any
406 arguments and no other timezone information is found.
407
408- Updating timezone information to version 2005q.
409
410
411Version 1.0
412-----------
413
414- Fixed parsing of XXhXXm formatted time after day/month/year
415 has been parsed.
416
417- Added patch by Jeffrey Harris optimizing rrule.__contains__.
418
419
420Version 0.9
421-----------
422
423- Fixed pickling of timezone types, as reported by
424 Andreas Köhler.
425
426- Implemented internal timezone information with binary
427 timezone files [1]. datautil.tz.gettz() function will now
428 try to use the system timezone files, and fallback to
429 the internal versions. It's also possible to ask for
430 the internal versions directly by using
431 dateutil.zoneinfo.gettz().
432
433- New tzwin timezone type, allowing access to Windows
434 internal timezones (contributed by Jeffrey Harris).
435
436- Fixed parsing of unicode date strings.
437
438- Accept parserinfo instances as the parser constructor
439 parameter, besides parserinfo (sub)classes.
440
441- Changed weekday to spell the not-set n value as None
442 instead of 0.
443
444- Fixed other reported bugs.
445
446[1] http://www.twinsun.com/tz/tz-link.htm
447
448
449Version 0.5
450-----------
451
452- Removed FREQ_ prefix from rrule frequency constants
453 WARNING: this breaks compatibility with previous versions.
454
455- Fixed rrule.between() for cases where "after" is achieved
456 before even starting, as reported by Andreas Köhler.
457
458- Fixed two digit zero-year parsing (such as 31-Dec-00), as
459 reported by Jim Abramson, and included test case for this.
460
461- Sort exdate and rdate before iterating over them, so that
462 it's not necessary to sort them before adding to the rruleset,
463 as reported by Nicholas Piper.