Version 2.7.5 (2018-10-27)
==========================

Data updates
------------

- Update tzdata to 2018g


Version 2.7.4 (2018-10-24)
==========================

Data updates
------------

- Updated tzdata version to 2018f.


Version 2.7.3 (2018-05-09)
==========================

Data updates
------------

- Update tzdata to 2018e. (gh pr #710)


Bugfixes
--------

- Fixed an issue where decimal.Decimal would cast `NaN` or infinite value in a
  parser.parse, which will raise decimal.Decimal-specific errors. Reported and
  fixed by @amureki (gh issue #662, gh pr #679).
- Fixed a ValueError being thrown if tzinfos call explicity returns ``None``.
  Reported by @pganssle (gh issue #661) Fixed by @parsethis (gh pr #681)
- Fixed incorrect parsing of certain dates earlier than 100 AD when repesented
  in the form "%B.%Y.%d", e.g. "December.0031.30". (gh issue #687, pr #700)
- Fixed a bug where automatically generated DTSTART was naive even if a
  specified UNTIL had a time zone. Automatically generated DTSTART will now
  take on the timezone of an UNTIL date, if provided. Reported by @href (gh
  issue #652). Fixed by @absreim (gh pr #693).


Documentation changes
---------------------

- Corrected link syntax and updated URL to https for ISO year week number
  notation in relativedelta examples. (gh issue #670, pr #711)
- Add doctest examples to tzfile documentation. Done by @weatherpattern and
  @pganssle (gh pr #671)
- Updated the documentation for relativedelta. Removed references to tuple
  arguments for weekday, explained effect of weekday(_, 1) and better explained
  the order of operations that relativedelta applies. Fixed by @kvn219
  @huangy22 and @ElliotJH (gh pr #673)
- Added changelog to documentation. (gh issue #692, gh pr #707)
- Changed order of keywords in rrule docstring. Reported and fixed by
  @rmahajan14 (gh issue #686, gh pr #695).
- Added documentation for ``dateutil.tz.gettz``. Reported by @pganssle (gh
  issue #647). Fixed by @weatherpattern (gh pr #704)
- Cleaned up malformed RST in the ``tz`` documentation. (gh issue #702, gh pr
  #706)
- Changed the default theme to sphinx_rtd_theme, and changed the sphinx
  configuration to go along with that. (gh pr #707)
- Reorganized ``dateutil.tz`` documentation and fixed issue with the
  ``dateutil.tz`` docstring. (gh pr #714)


Misc
----

- GH #674, GH #688, GH #699


Version 2.7.2 (2018-03-26)
==========================

Bugfixes
--------

- Fixed an issue with the setup script running in non-UTF-8 environment.
  Reported and fixed by @gergondet (gh pr #651)


Misc
----

- GH #655


Version 2.7.1 (2018-03-24)
===========================

Data updates
------------

- Updated tzdata version to 2018d.


Bugfixes
--------

- Fixed issue where parser.parse would occasionally raise
  decimal.Decimal-specific error types rather than ValueError. Reported by
  @amureki (gh issue #632). Fixed by @pganssle (gh pr #636).
- Improve error message when rrule's dtstart and until are not both naive or
  both aware. Reported and fixed by @ryanpetrello (gh issue #633, gh pr #634)


Misc
----

- GH #644, GH #648


Version 2.7.0
=============
- Dropped support for Python 2.6 (gh pr #362 by @jdufresne)
- Dropped support for Python 3.2 (gh pr #626)
- Updated zoneinfo file to 2018c (gh pr #616)
- Changed licensing scheme so all new contributions are dual licensed under
  Apache 2.0 and BSD. (gh pr #542, issue #496)
- Added __all__ variable to the root package. Reported by @tebriel
  (gh issue #406), fixed by @mariocj89 (gh pr #494)
- Added python_requires to setup.py so that pip will distribute the right
  version of dateutil. Fixed by @jakec-github (gh issue #537, pr #552)
- Added the utils submodule, for miscellaneous utilities.
- Added within_delta function to utils - added by @justanr (gh issue #432,
  gh pr #437)
- Added today function to utils (gh pr #474)
- Added default_tzinfo function to utils (gh pr #475), solving an issue
  reported by @nealmcb (gh issue #94)
- Added dedicated ISO 8601 parsing function isoparse (gh issue #424).
  Initial implementation by @pganssle in gh pr #489 and #622, with a
  pre-release fix by @kirit93 (gh issue #546, gh pr #573). 
- Moved parser module into parser/_parser.py and officially deprecated the use
  of several private functions and classes from that module. (gh pr #501, #515)
- Tweaked parser error message to include rejected string format, added by
  @pbiering (gh pr #300)
- Add support for parsing bytesarray, reported by @uckelman (gh issue #417) and
  fixed by @uckelman and @pganssle (gh pr #514)
- Started raising a warning when the parser finds a timezone string that it
  cannot construct a tzinfo instance for (rather than succeeding with no
  indication of an error). Reported and fixed by @jbrockmendel (gh pr #540)
- Dropped the use of assert in the parser. Fixed by @jbrockmendel (gh pr #502)
- Fixed to assertion logic in parser to support dates like '2015-15-May',
  reported and fixed by @jbrockmendel (gh pr #409)
- Fixed IndexError in parser on dates with trailing colons, reported and fixed
  by @jbrockmendel (gh pr #420)
- Fixed bug where hours were not validated, leading to improper parse. Reported
  by @heappro (gh pr #353), fixed by @jbrockmendel (gh pr #482)
- Fixed problem parsing strings in %b-%Y-%d format. Reported and fixed by
  @jbrockmendel (gh pr #481)
- Fixed problem parsing strings in the %d%B%y format. Reported by @asishm
  (gh issue #360), fixed by @jbrockmendel (gh pr #483)
- Fixed problem parsing certain unambiguous strings when year <99 (gh pr #510).
  Reported by @alexwlchan (gh issue #293).
- Fixed issue with parsing an unambiguous string representation of an ambiguous
  datetime such that if possible the correct value for fold is set. Fixes
  issue reported by @JordonPhillips and @pganssle (gh issue #318, #320,
  gh pr #517)
- Fixed issue with improper rounding of fractional components. Reported by
  @dddmello (gh issue #427), fixed by @m-dz (gh pr #570)
- Performance improvement to parser from removing certain min() calls. Reported
  and fixed by @jbrockmendel (gh pr #589)
- Significantly refactored parser code by @jbrockmendel (gh prs #419, #436,
  #490, #498, #539) and @pganssle (gh prs #435, #468)
- Implementated of __hash__ for relativedelta and weekday, reported and fixed
  by @mrigor (gh pr #389) 
- Implemented __abs__ for relativedelta. Reported by @binnisb and @pferreir
  (gh issue #350, pr #472)
- Fixed relativedelta.weeks property getter and setter to work for both
  negative and positive values. Reported and fixed by @souliane (gh issue #459,
  pr #460)
- Fixed issue where passing whole number floats to the months or years
  arguments of the relativedelta constructor would lead to errors during
  addition. Reported by @arouanet (gh pr #411), fixed by @lkollar (gh pr #553)
- Added a pre-built tz.UTC object representing UTC (gh pr #497)
- Added a cache to tz.gettz so that by default it will return the same object
  for identical inputs. This will change the semantics of certain operations
  between datetimes constructed with tzinfo=tz.gettz(...). (gh pr #628)
- Changed the behavior of tz.tzutc to return a singleton (gh pr #497, #504)
- Changed the behavior of tz.tzoffset to return the same object when passed the
  same inputs, with a corresponding performance improvement (gh pr #504)
- Changed the behavior of tz.tzstr to return the same object when passed the
  same inputs. (gh pr #628)
- Added .instance alternate constructors for tz.tzoffset and tz.tzstr, to
  allow the construction of a new instance if desired. (gh pr #628)
- Added the tz.gettz.nocache function to allow explicit retrieval of a new
  instance of the relevant tzinfo. (gh pr #628)
- Expand definition of tz.tzlocal equality so that the local zone is allow
  equality with tzoffset and tzutc. (gh pr #598)
- Deprecated the idiosyncratic tzstr format mentioned in several examples but
  evidently designed exclusively for dateutil, and very likely not used by
  any current users. (gh issue #595, gh pr #606)
- Added the tz.resolve_imaginary function, which generates a real date from
  an imaginary one, if necessary. Implemented by @Cheukting (gh issue #339,
  gh pr #607)
- Fixed issue where the tz.tzstr constructor would erroneously succeed if
  passed an invalid value for tzstr. Fixed by @pablogsal (gh issue #259,
  gh pr #581)
- Fixed issue with tz.gettz for TZ variables that start with a colon. Reported
  and fixed by @lapointexavier (gh pr #601)
- Added a lock to tz.tzical's cache. Reported and fixed by @Unrud (gh pr #430) 
- Fixed an issue with fold support on certain Python 3 implementations that
  used the pre-3.6 pure Python implementation of datetime.replace, most
  notably pypy3 (gh pr #446).
- Added support for VALUE=DATE-TIME for DTSTART in rrulestr. Reported by @potuz
  (gh issue #401) and fixed by @Unrud (gh pr #429)
- Started enforcing that within VTIMEZONE, the VALUE parameter can only be
  omitted or DATE-TIME, per RFC 5545. Reported by @Unrud (gh pr #439)
- Added support for TZID parameter for DTSTART in rrulestr. Reported and
  fixed by @ryanpetrello (gh issue #614, gh pr #624)
- Added 'RRULE:' prefix to rrule strings generated by rrule.__str__, in
  compliance with the RFC. Reported by @AndrewPashkin (gh issue #86), fixed by
  @jarondl and @mlorant (gh pr #450)
- Switched to setuptools_scm for version management, automatically calculating
  a version number from the git metadata. Reported by @jreback (gh issue #511),
  implemented by @Sulley38 (gh pr #564)
- Switched setup.py to use find_packages, and started testing against pip
  installed versions of dateutil in CI. Fixed issue with parser import
  discovered by @jreback in pandas-dev/pandas#18141. (gh issue #507, pr #509)
- Switched test suite to using pytest (gh pr #495)
- Switched CI over to use tox. Fixed by @gaborbernat (gh pr #549)
- Added a test-only dependency on freezegun. (gh pr #474)
- Reduced number of CI builds on Appveyor. Fixed by @kirit93 (gh issue #529,
  gh pr #579)
- Made xfails strict by default, so that an xpass is a failure. (gh pr #567)
- Added a documentation generation stage to tox and CI. (gh pr #568)
- Added an explicit warning when running python setup.py explaining how to run
  the test suites with pytest. Fixed by @lkollar. (gh issue #544, gh pr #548)
- Added requirements-dev.txt for test dependency management (gh pr #499, #516)
- Fixed code coverage metrics to account for Windows builds (gh pr #526)
- Fixed code coverage metrics to NOT count xfails. Fixed by @gaborbernat
  (gh issue #519, gh pr #563)
- Style improvement to zoneinfo.tzfile that was confusing to static type
  checkers. Reported and fixed by @quodlibetor (gh pr #485)
- Several unused imports were removed by @jdufresne. (gh pr #486)
- Switched ``isinstance(*, collections.Callable)`` to callable, which is available
  on all supported Python versions. Implemented by @jdufresne (gh pr #612)
- Added CONTRIBUTING.md (gh pr #533)
- Added AUTHORS.md (gh pr #542)
- Corrected setup.py metadata to reflect author vs. maintainer, (gh issue #477,
  gh pr #538)
- Corrected README to reflect that tests are now run in pytest. Reported and
  fixed by @m-dz (gh issue #556, gh pr #557)
- Updated all references to RFC 2445 (iCalendar) to point to RFC 5545. Fixed
  by @mariocj89 (gh issue #543, gh pr #555)
- Corrected parse documentation to reflect proper integer offset units,
  reported and fixed by @abrugh (gh pr #458)
- Fixed dangling parenthesis in tzoffset documentation (gh pr #461)
- Started including the license file in wheels. Reported and fixed by
  @jdufresne (gh pr #476)
- Indendation fixes to parser docstring by @jbrockmendel (gh pr #492)
- Moved many examples from the "examples" documentation into their appropriate
  module documentation pages. Fixed by @Tomasz-Kluczkowski and @jakec-github
  (gh pr #558, #561)
- Fixed documentation so that the parser.isoparse documentation displays.
  Fixed by @alexchamberlain (gh issue #545, gh pr #560)
- Refactored build and release sections and added setup instructions to
  CONTRIBUTING. Reported and fixed by @kynan (gh pr #562)
- Cleaned up various dead links in the documentation. (gh pr #602, #608, #618)

Version 2.6.1
=============
- Updated zoneinfo file to 2017b. (gh pr #395)
- Added Python 3.6 to CI testing (gh pr #365)
- Removed duplicate test name that was preventing a test from being run.
  Reported and fixed by @jdufresne (gh pr #371)
- Fixed testing of folds and gaps, particularly on Windows (gh pr #392)
- Fixed deprecated escape characters in regular expressions. Reported by
  @nascheme and @thierryba (gh issue #361), fixed by @thierryba (gh pr #358)
- Many PEP8 style violations and other code smells were fixed by @jdufresne
  (gh prs #358, #363, #364, #366, #367, #368, #372, #374, #379, #380, #398)
- Improved performance of tzutc and tzoffset objects. (gh pr #391)
- Fixed issue with several time zone classes around DST transitions in any
  zones with +0 standard offset (e.g. Europe/London) (gh issue #321, pr #390)
- Fixed issue with fuzzy parsing where tokens similar to AM/PM that are in the
  end skipped were dropped in the fuzzy_with_tokens list. Reported and fixed
  by @jbrockmendel (gh pr #332).
- Fixed issue with parsing dates of the form X m YY. Reported by @jbrockmendel.
  (gh issue #333, pr #393)
- Added support for parser weekdays with less than 3 characters. Reported by
  @arcadefoam (gh issue #343), fixed by @jonemo (gh pr #382)
- Fixed issue with the addition and subtraction of certain relativedeltas.
  Reported and fixed by @kootenpv (gh issue #346, pr #347)
- Fixed issue where the COUNT parameter of rrules was ignored if 0. Fixed by
  @mshenfield (gh pr #330), reported by @vaultah (gh issue #329).
- Updated documentation to include the new tz methods. (gh pr #324)
- Update documentation to reflect that the parser can raise TypeError, reported
  and fixed by @tomchuk (gh issue #336, pr #337)
- Fixed an incorrect year in a parser doctest. Fixed by @xlotlu (gh pr #357)
- Moved version information into _version.py and set up the versions more
  granularly.

Version 2.6.0
=============
- Added PEP-495-compatible methods to address ambiguous and imaginary dates in
  time zones in a backwards-compatible way. Ambiguous dates and times can now
  be safely represented by all dateutil time zones. Many thanks to Alexander
  Belopolski (@abalkin) and Tim Peters @tim-one for their inputs on how to
  address this. Original issues reported by Yupeng and @zed (lP: 1390262,
  gh issues #57, #112, #249, #284, #286, prs #127, #225, #248, #264, #302).
- Added new methods for working with ambiguous and imaginary dates to the tz
  module. datetime_ambiguous() determines if a datetime is ambiguous for a given
  zone and datetime_exists() determines if a datetime exists in a given zone.
  This works for all fold-aware datetimes, not just those provided by dateutil.
  (gh issue #253, gh pr #302)
- Fixed an issue where dst() in Portugal in 1996 was returning the wrong value
  in tz.tzfile objects. Reported by @abalkin (gh issue #128, pr #225)
- Fixed an issue where zoneinfo.ZoneInfoFile errors were not being properly
  deep-copied. (gh issue #226, pr #225)
- Refactored tzwin and tzrange as a subclass of a common class, tzrangebase, as
  there was substantial overlapping functionality. As part of this change,
  tzrange and tzstr now expose a transitions() function, which returns the
  DST on and off transitions for a given year. (gh issue #260, pr #302)
- Deprecated zoneinfo.gettz() due to confusion with tz.gettz(), in favor of
  get() method of zoneinfo.ZoneInfoFile objects. (gh issue #11, pr #310)
- For non-character, non-stream arguments, parser.parse now raises TypeError
  instead of AttributeError. (gh issues #171, #269, pr #247)
- Fixed an issue where tzfile objects were not properly handling dst() and
  tzname() when attached to datetime.time objects. Reported by @ovacephaloid.
  (gh issue #292, pr #309)
- /usr/share/lib/zoneinfo was added to TZPATHS for compatibility with Solaris
  systems. Reported by @dhduvall (gh issue #276, pr #307)
- tzoffset and tzrange objects now accept either a number of seconds or a
  datetime.timedelta() object wherever previously only a number of seconds was
  allowed. (gh pr #264, #277)
- datetime.timedelta objects can now be added to relativedelta objects. Reported
  and added by Alec Nikolas Reiter (@justanr) (gh issue #282, pr #283
- Refactored relativedelta.weekday and rrule.weekday into a common base class
  to reduce code duplication. (gh issue #140, pr #311)
- An issue where the WKST parameter was improperly rendering in str(rrule) was
  reported and fixed by Daniel LePage (@dplepage). (gh issue #262, pr #263)
- A replace() method has been added to rrule objects by @jendas1, which creates
  new rrule with modified attributes, analogous to datetime.replace (gh pr #167)
- Made some significant performance improvements to rrule objects in Python 2.x
  (gh pr #245)
- All classes defining equality functions now return NotImplemented when
  compared to unsupported classes, rather than raising TypeError, to allow other
  classes to provide fallback support. (gh pr #236)
- Several classes have been marked as explicitly unhashable to maintain
  identical behavior between Python 2 and 3. Submitted by Roy Williams
  (@rowillia) (gh pr #296)
- Trailing whitespace in easter.py has been removed. Submitted by @OmgImAlexis
  (gh pr #299)
- Windows-only batch files in build scripts had line endings switched to CRLF.
  (gh pr #237)
- @adamchainz updated the documentation links to reflect that the canonical
  location for readthedocs links is now at .io, not .org. (gh pr #272)
- Made some changes to the CI and codecov to test against newer versions of
  Python and pypy, and to adjust the code coverage requirements. For the moment,
  full pypy3 compatibility is not supported until a new release is available,
  due to upstream bugs in the old version affecting PEP-495 support.
  (gh prs #265, #266, #304, #308)
- The full PGP signing key fingerprint was added to the README.md in favor of
  the previously used long-id. Reported by @valholl (gh issue #287, pr #304)
- Updated zoneinfo to 2016i. (gh issue #298, gh pr #306)


Version 2.5.3
=============
- Updated zoneinfo to 2016d
- Fixed parser bug where unambiguous datetimes fail to parse when dayfirst is
  set to true. (gh issue #233, pr #234)
- Bug in zoneinfo file on platforms such as Google App Engine which do not
  do not allow importing of subprocess.check_call was reported and fixed by
  @savraj (gh issue #239, gh pr #240)
- Fixed incorrect version in documentation (gh issue #235, pr #243)

Version 2.5.2
=============
- Updated zoneinfo to 2016c
- Fixed parser bug where yearfirst and dayfirst parameters were not being
  respected when no separator was present. (gh issue #81 and #217, pr #229)

Version 2.5.1
=============
- Updated zoneinfo to 2016b
- Changed MANIFEST.in to explicitly include test suite in source distributions,
  with help from @koobs (gh issue #193, pr #194, #201, #221)
- Explicitly set all line-endings to LF, except for the NEWS file, on a
  per-repository basis (gh pr #218)
- Fixed an issue with improper caching behavior in rruleset objects (gh issue
  #104, pr #207)
- Changed to an explicit error when rrulestr strings contain a missing BYDAY
  (gh issue #162, pr #211)
- tzfile now correctly handles files containing leapcnt (although the leapcnt
  information is not actually used). Contributed by @hjoukl (gh issue #146, pr
  #147)
- Fixed recursive import issue with tz module (gh pr #204)
- Added compatibility between tzwin objects and datetime.time objects (gh issue
  #216, gh pr #219)
- Refactored monolithic test suite by module (gh issue #61, pr #200 and #206)
- Improved test coverage in the relativedelta module (gh pr #215)
- Adjusted documentation to reflect possibly counter-intuitive properties of
  RFC-5545-compliant rrules, and other documentation improvements in the rrule
  module (gh issue #105, gh issue #149 - pointer to the solution by @phep,
  pr #213).


Version 2.5.0
=============
- Updated zoneinfo to 2016a
- zoneinfo_metadata file version increased to 2.0 - the updated updatezinfo.py
  script will work with older zoneinfo_metadata.json files, but new metadata
  files will not work with older updatezinfo.py versions. Additionally, we have
  started hosting our own mirror of the Olson databases on a github pages
  site (https://dateutil.github.io/tzdata/) (gh pr #183)
- dateutil zoneinfo tarballs now contain the full zoneinfo_metadata file used
  to generate them. (gh issue #27, gh pr #85)
- relativedelta can now be safely subclassed without derived objects reverting
  to base relativedelta objects as a result of arithmetic operations.
  (lp:1010199, gh issue #44, pr #49)
- relativedelta 'weeks' parameter can now be set and retrieved as a property of
  relativedelta instances. (lp: 727525, gh issue #45, pr #49)
- relativedelta now explicitly supports fractional relative weeks, days, hours,
  minutes and seconds. Fractional values in absolute parameters (year, day, etc)
  are now deprecated. (gh issue #40, pr #190)
- relativedelta objects previously did not use microseconds to determine of two
  relativedelta objects were equal. This oversight has been corrected.
  Contributed by @elprans (gh pr #113)
- rrule now has an xafter() method for retrieving multiple recurrences after a
  specified date. (gh pr #38)
- str(rrule) now returns an RFC2445-compliant rrule string, contributed by
  @schinckel and @armicron (lp:1406305, gh issue #47, prs #50, #62 and #160)
- rrule performance under certain conditions has been significantly improved
  thanks to a patch contributed by @dekoza, based on an article by Brian Beck
  (@exogen) (gh pr #136)
- The use of both the 'until' and 'count' parameters is now deprecated as
  inconsistent with RFC2445 (gh pr #62, #185)
- Parsing an empty string will now raise a ValueError, rather than returning the
  datetime passed to the 'default' parameter. (gh issue #78, pr #187)
- tzwinlocal objects now have a meaningful repr() and str() implementation
  (gh issue #148, prs #184 and #186)
- Added equality logic for tzwin and tzwinlocal objects. (gh issue #151,
  pr #180, #184)
- Added some flexibility in subclassing timelex, and switched the default
  behavior over to using string methods rather than comparing against a fixed
  list. (gh pr #122, #139)
- An issue causing tzstr() to crash on Python 2.x was fixed. (lp: 1331576,
  gh issue #51, pr #55)
- An issue with string encoding causing exceptions under certain circumstances
  when tzname() is called was fixed. (gh issue #60, #74, pr #75)
- Parser issue where calling parse() on dates with no day specified when the
  day of the month in the default datetime (which is "today" if unspecified) is
  greater than the number of days in the parsed month was fixed (this issue
  tended to crop up between the 29th and 31st of the month, for obvious reasons)
  (canonical gh issue #25, pr #30, #191)
- Fixed parser issue causing fuzzy_with_tokens to raise an unexpected exception
  in certain circumstances. Contributed by @MichaelAquilina (gh pr #91)
- Fixed parser issue where years > 100 AD were incorrectly parsed. Contributed
  by @Bachmann1234 (gh pr #130)
- Fixed parser issue where commas were not a valid separator between seconds
  and microseconds, preventing parsing of ISO 8601 dates. Contributed by
  @ryanss (gh issue #28, pr #106)
- Fixed issue with tzwin encoding in locales with non-Latin alphabets
  (gh issue #92, pr #98)
- Fixed an issue where tzwin was not being properly imported on Windows.
  Contributed by @labrys. (gh pr #134)
- Fixed a problem causing issues importing zoneinfo in certain circumstances.
  Issue and solution contributed by @alexxv (gh issue #97, pr #99)
- Fixed an issue where dateutil timezones were not compatible with basic time
  objects. One of many, many timezone related issues contributed and tested by
  @labrys. (gh issue #132, pr #181)
- Fixed issue where tzwinlocal had an invalid utcoffset. (gh issue #135,
  pr #141, #142)
- Fixed issue with tzwin and tzwinlocal where DST transitions were incorrectly
  parsed from the registry. (gh issue #143, pr #178)
- updatezinfo.py no longer suppresses certain OSErrors. Contributed by @bjamesv
  (gh pr #164)
- An issue that arose when timezone locale changes during runtime has been
  fixed by @carlosxl and @mjschultz (gh issue #100, prs #107, #109)
- Python 3.5 was added to the supported platforms in the metadata (@tacaswell
  gh pr #159) and the test suites (@moreati gh pr #117).
- An issue with tox failing without unittest2 installed in Python 2.6 was fixed
  by @moreati (gh pr #115)
- Several deprecated functions were replaced in the tests by @moreati
  (gh pr #116)
- Improved the logic in Travis and Appveyor to alleviate issues where builds
  were failing due to connection issues when downloading the IANA timezone
  files. In addition to adding our own mirror for the files (gh pr #183), the
  download is now retried a number of times (with a delay) (gh pr #177)
- Many failing doctests were fixed by @moreati. (gh pr #120)
- Many fixes to the documentation (gh pr #103, gh pr #87 from @radarhere,
  gh pr #154 from @gpoesia, gh pr #156 from @awsum, gh pr #168 from @ja8zyjits)
- Added a code coverage tool to the CI to help improve the library. (gh pr #182)
- We now have a mailing list - dateutil@python.org, graciously hosted by
  Python.org.


Version 2.4.2
=============
- Updated zoneinfo to 2015b.
- Fixed issue with parsing of tzstr on Python 2.7.x; tzstr will now be decoded
  if not a unicode type. gh #51 (lp:1331576), gh pr #55.
- Fix a parser issue where AM and PM tokens were showing up in fuzzy date
  stamps, triggering inappropriate errors. gh #56 (lp: 1428895), gh pr #63.
- Missing function "setcachesize" removed from zoneinfo __all__ list by @ryanss,
  fixing an issue with wildcard imports of dateutil.zoneinfo. (gh pr #66).
- (PyPI only) Fix an issue with source distributions not including the test
  suite.


Version 2.4.1
=============

- Added explicit check for valid hours if AM/PM is specified in parser.
  (gh pr #22, issue #21)
- Fix bug in rrule introduced in 2.4.0 where byweekday parameter was not
  handled properly. (gh pr #35, issue #34)
- Fix error where parser allowed some invalid dates, overwriting existing hours
  with the last 2-digit number in the string. (gh pr #32, issue #31)
- Fix and add test for Python 2.x compatibility with boolean checking of
  relativedelta objects. Implemented by @nimasmi (gh pr #43) and Cédric Krier
  (lp: 1035038)
- Replaced parse() calls with explicit datetime objects in unit tests unrelated
  to parser. (gh pr #36)
- Changed private _byxxx from sets to sorted tuples and fixed one currently
  unreachable bug in _construct_byset. (gh pr #54)
- Additional documentation for parser (gh pr #29, #33, #41) and rrule.
- Formatting fixes to documentation of rrule and README.rst.
- Updated zoneinfo to 2015a.

Version 2.4.0
=============

- Fix an issue with relativedelta and freezegun (lp:1374022)
- Fix tzinfo in windows for timezones without dst (lp:1010050, gh #2)
- Ignore missing timezones in windows like in POSIX
- Fix minimal version requirement for six (gh #6)
- Many rrule changes and fixes by @pganssle (gh pull requests #13 #14 #17),
    including defusing some infinite loops (gh #4)

Version 2.3
===========

- Cleanup directory structure, moved test.py to dateutil/tests/test.py

- Changed many aspects of dealing with the zone info file. Instead of a cache,
  all the zones are loaded to memory, but symbolic links are loaded only once,
  so not much memory is used.

- The package is now zip-safe, and universal-wheelable, thanks to changes in
  the handling of the zoneinfo file.

- Fixed tzwin silently not imported on windows python2

- New maintainer, together with new hosting: GitHub, Travis, Read-The-Docs

Version 2.2
===========

- Updated zoneinfo to 2013h

- fuzzy_with_tokens parse addon from Christopher Corley

- Bug with LANG=C fixed by Mike Gilbert

Version 2.1
===========

- New maintainer

- Dateutil now works on Python 2.6, 2.7 and 3.2 from same codebase (with six)

- #704047: Ismael Carnales' patch for a new time format

- Small bug fixes, thanks for reporters!


Version 2.0
===========

- Ported to Python 3, by Brian Jones.  If you need dateutil for Python 2.X,
  please continue using the 1.X series.

- There's no such thing as a "PSF License".  This source code is now
  made available under the Simplified BSD license.  See LICENSE for
  details.

Version 1.5
===========

- As reported by Mathieu Bridon, rrules were matching the bysecond rules
  incorrectly against byminute in some circumstances when the SECONDLY
  frequency was in use, due to a copy & paste bug.  The problem has been
  unittested and corrected.

- Adam Ryan reported a problem in the relativedelta implementation which
  affected the yearday parameter in the month of January specifically.
  This has been unittested and fixed.

- Updated timezone information.


Version 1.4.1
=============

- Updated timezone information.


Version 1.4
===========

- Fixed another parser precision problem on conversion of decimal seconds
  to microseconds, as reported by Erik Brown.  Now these issues are gone
  for real since it's not using floating point arithmetic anymore.

- Fixed case where tzrange.utcoffset and tzrange.dst() might fail due
  to a date being used where a datetime was expected (reported and fixed
  by Lennart Regebro).

- Prevent tzstr from introducing daylight timings in strings that didn't
  specify them (reported by Lennart Regebro).

- Calls like gettz("GMT+3") and gettz("UTC-2") will now return the
  expected values, instead of the TZ variable behavior.

- Fixed DST signal handling in zoneinfo files.  Reported by
  Nicholas F. Fabry and John-Mark Gurney.


Version 1.3
===========

- Fixed precision problem on conversion of decimal seconds to
  microseconds, as reported by Skip Montanaro.

- Fixed bug in constructor of parser, and converted parser classes to
  new-style classes.  Original report and patch by Michael Elsdörfer.

- Initialize tzid and comps in tz.py, to prevent the code from ever
  raising a NameError (even with broken files).  Johan Dahlin suggested
  the fix after a pyflakes run.

- Version is now published in dateutil.__version__, as requested
  by Darren Dale.

- All code is compatible with new-style division.


Version 1.2
===========

- Now tzfile will round timezones to full-minutes if necessary,
  since Python's datetime doesn't support sub-minute offsets.
  Thanks to Ilpo Nyyssönen for reporting the issue.

- Removed bare string exceptions, as reported and fixed by
  Wilfredo Sánchez Vega.

- Fix bug in leap count parsing (reported and fixed by Eugene Oden).


Version 1.1
===========

- Fixed rrule byyearday handling. Abramo Bagnara pointed out that
  RFC2445 allows negative numbers.

- Fixed --prefix handling in setup.py (by Sidnei da Silva).

- Now tz.gettz() returns a tzlocal instance when not given any
  arguments and no other timezone information is found.

- Updating timezone information to version 2005q.


Version 1.0
===========

- Fixed parsing of XXhXXm formatted time after day/month/year
  has been parsed.

- Added patch by Jeffrey Harris optimizing rrule.__contains__.


Version 0.9
===========

- Fixed pickling of timezone types, as reported by
  Andreas Köhler.

- Implemented internal timezone information with binary
  timezone files. datautil.tz.gettz() function will now
  try to use the system timezone files, and fallback to
  the internal versions. It's also possible to ask for
  the internal versions directly by using
  dateutil.zoneinfo.gettz().

- New tzwin timezone type, allowing access to Windows
  internal timezones (contributed by Jeffrey Harris).

- Fixed parsing of unicode date strings.

- Accept parserinfo instances as the parser constructor
  parameter, besides parserinfo (sub)classes.

- Changed weekday to spell the not-set n value as None
  instead of 0.

- Fixed other reported bugs.


Version 0.5
===========

- Removed ``FREQ_`` prefix from rrule frequency constants
  WARNING: this breaks compatibility with previous versions.

- Fixed rrule.between() for cases where "after" is achieved
  before even starting, as reported by Andreas Köhler.

- Fixed two digit zero-year parsing (such as 31-Dec-00), as
  reported by Jim Abramson, and included test case for this.

- Sort exdate and rdate before iterating over them, so that
  it's not necessary to sort them before adding to the rruleset,
  as reported by Nicholas Piper.
