-------------
- Updated zoneinfo file to 2017b.
- Added Python 3.6 to CI testing
- Removed duplicate test name that was preventing a test from being run.
- Fixed testing of folds and gaps, particularly on Windows
- Fixed deprecated escape characters in regular expressions.
- Many PEP8 style violations and other code smells were fixed.
- Improved performance of tzutc and tzoffset objects.
- Fixed issue with several time zone classes around DST transitions in any
zones with +0 standard offset (e.g. Europe/London)
- 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.
- Fixed issue with parsing dates of the form X m YY.
- Added support for parser weekdays with less than 3 characters.
- Fixed issue with the addition and subtraction of certain relativedeltas.
- Fixed issue where the COUNT parameter of rrules was ignored if 0.
- Updated documentation to include the new tz methods.
- Update documentation to reflect that the parser can raise TypeError.
- Fixed an incorrect year in a parser doctest.
- Moved version information into _version.py and set up the versions more
granularly.
* 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.
* 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.
* Fixed an issue where dst() in Portugal in 1996 was returning the wrong value
in tz.tzfile objects
* Fixed an issue where zoneinfo.ZoneInfoFile errors were not being properly
deep-copied.
* 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.
* Deprecated zoneinfo.gettz() due to confusion with tz.gettz(), in favor of
get() method of zoneinfo.ZoneInfoFile objects.
* For non-character, non-stream arguments, parser.parse now raises TypeError
instead of AttributeError.
* Fixed an issue where tzfile objects were not properly handling dst() and
tzname() when attached to datetime.time objects.
* /usr/share/lib/zoneinfo was added to TZPATHS for compatibility with Solaris
systems.
* 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.
* datetime.timedelta objects can now be added to relativedelta objects.
* Refactored relativedelta.weekday and rrule.weekday into a common base class
to reduce code duplication.
NEWS:
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.
Problems found with mismatching existing digests for:
distfiles/asclock-classic-1.0.tar.gz
distfiles/asclock-gtk-2.1.10beta.tar.gz
distfiles/asclock-xlib-2.0.11.tar.gz
distfiles/emiclock-2.0.2.tar.gz
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
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.
either because they themselves are not ready or because a
dependency isn't. This is annotated by
PYTHON_VERSIONS_INCOMPATIBLE= 33 # not yet ported as of x.y.z
or
PYTHON_VERSIONS_INCOMPATIBLE= 33 # py-foo, py-bar
respectively, please use the same style for other packages,
and check during updates.
Use versioned_dependencies.mk where applicable.
Use REPLACE_PYTHON instead of handcoded alternatives, where applicable.
Reorder Makefile sections into standard order, where applicable.
Remove PYTHON_VERSIONS_INCLUDE_3X lines since that will be default
with the next commit.
Whitespace cleanups and other nits corrected, where necessary.
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
- 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.
- assume that Python 2.4 and 2.5 are compatible and allow checking for
fallout.
- remove PYTHON_VERSIONS_COMPATIBLE that are obsoleted by the 2.3+
default. Modify the others to deal with the removals.
by recht@ and updated by me.
The dateutil module provides powerful extensions to the standard datetime
module, available in Python 2.3+.
Features
* Computing of relative deltas (next month, next year, next monday, last week
of month, etc);
* Computing of relative deltas between two given date and/or datetime objects;
* Computing of dates based on very flexible recurrence rules, using a superset
of the iCalendar specification. Parsing of RFC strings is supported as well.
* Generic parsing of dates in almost any string format;
* Timezone (tzinfo) implementations for tzfile(5) format files
(/etc/localtime, /usr/share/zoneinfo, etc), TZ environment string (in all
known formats), iCalendar format files, given ranges (with help from
relative deltas), local machine timezone, fixed offset timezone, and UTC
timezone.
* Computing of Easter Sunday dates for any given year, using Western, Orthodox
or Julian algorithms;
* More than 400 test cases.