Provides an up-to-date copy of the Internet Assigned Numbers Authority
(IANA) Time Zone Database. It is updated periodically to reflect
changes made by political bodies to time zone boundaries, UTC offsets,
and daylight saving time rules. Additionally, this package provides a
C++ interface for working with the 'date' library. 'date' provides
comprehensive support for working with dates and date-times, which
this package exposes to make it easier for other R packages to
utilize. Headers are provided for calendar specific calculations,
along with a limited interface for time zone manipulations.
Update DEPENDS
Upstream changes:
0.34
- support timezones in parenthesis
- Add support for YYYY-MM-DD HH:MM P.M. format
- thanks Michael Schout for the patch!
0.33 Wed May 26 2021
- changes to how some days are parsed to fix memory leaks
- remove Module::Pluggable as a dependency
- thanks BBKR rt #136597
Version 2.2.0
* Added Python 3.9 support
* Switched to using a C implementation of `timezone` objects.
* Much faster parse times for timestamps with timezone information
* ~2.5x faster on Python 2.7, ~10% faster on Python 3.9
* Thanks to [`pendulum`](https://github.com/sdispater/pendulum) and @sdispater for the code.
* Python 2.7 users no longer need to install `pytz` dependency 😃
* Added caching of tzinfo objects
* Parsing is ~1.1x faster for subsequent timestamps that have the same time zone offset.
* Caching can be disabled at compile time by setting the `CISO8601_CACHING_ENABLED=0` environment variable
* Fixed a memory leak in the case where an invalid timestamp had a non-UTC timezone and extra characters
** Announcement:
Taskwarrior 2.5.3 Released 2021-01-03
The TaskWarrior team is happy to announce a new release! This
bugfix-only release ships a critical fix for issue #2375, which
can make your task report commands hang and eventually die in
certain scenarios.
There were no other critical issues reported specifically for the
2.5.2 release, which either means we did an exceptional job in
backporting bugfixes from 2.6.0, or nobody tested the 2.5.2 release
and we're talking to ourselves here. Going forward, we're going to
tweet more. We can get hearts there.
While most developments happen on the 2.6.0 branch, the 2.5.3 also
proudly features refactored CI system which gave its stamp of
approval for this release.
This is a recommended upgrade.
** Changelog:
2.5.3 () -
- #2375 task hangs then dies when certain tasks are present in a report
Thanks to Max Rossmannek, Tomáš Janoušek and Chad Phillips.
------ current release ---------------------------
2.5.2 (2020-12-05) - b0c17d11639dc6e783befd89c8508f2abb9b4287
- TD-64 sync conflict deleted all annotations of the task
Thanks to Markus Beppler, Konstantin Vorobyev
- TI-91 Timewarrior does not compile on DragonFly
Thanks to Michael Neumann
- TW #1 URL formating
Thanks to buhtz
- TW #2 Update to markdown and rename DEVELOPER to DEVELOPER.md
Thanks to Lynoure Braakman
- TW-54/#115 Reduce output for timesheet
Thanks to Aikido guy
- TW-61 Extract only tasks with annotations
Thanks to Aikido Guy
- TW-213 Align countdown column on boundary between number and text.
Thanks to Eric Fluger
- TW-1572 Alternative approach to urgency inheritance
Thanks to Jens Erat, Wim Schuermann
- TW-1667 hooks: upon failure indicate which hook failed
Thanks to Daniel Shahaf
- TW-1785 Purge command to remove deleted tasks
Thanks to Paul Beckingham
- TW-1772 Implementation of circular dependency detection is inefficient
Thanks to Michael Meier
- TW-1778 Unicode strings are truncated in task description
Thanks to Andrew, bjonnh, OKOMPer, Vladimir
- TW-1788 Closing a reopened task does not update the end time
Thanks to Ralph Bean
- TW-1791 taskrc(5) manpage: spurious "pri." in rule.precedence.color
Thanks to Sebastien Badia
- TW-1792 The info command uses '0' to reference dependencies on non-
pending tasks.
- TW-1795 Calendar underline on Day padding
Thanks to Renato Alves
- TW-1805 project:ide is not allowed
Thanks to Slaven ʙanovic
- TW-1807 dateformat lacks a flag to display day of week
Thanks to Ellington Santos
- TW-1813 Range filter doesn't work
Thanks to george js
- TW-1820 Install with -DLANGUAGE=2 flag not work.
Thanks to E. Manuel Cerr'on Angeles
- TW-1823 Incorrect unicode text wrapping / justifying.
Thanks to Sergey Trofimov
- TW-1827 Extract annotations from a task
Thanks to Ryan
- TW-1855 "Well-known" CA certificates not properly auto-loaded
Thanks to Flavio Poletti
- TW-1857 Change Task::get call to the more efficient Task::has
Thanks to Zachary Manning
- TW‐1858 Change signature for dependencyGetBlocked
- TW-1859 Change signature of Task::getTags
- TW-1860 Change signature of Task::getAnnotations
- TW-1861 Truncated description when adding annotation
Thanks to eezewaek
- TW-1869 segmentation fault (on unusual installation)
Thanks to Eric Hymowitz
- TW-1873 Specify different path to extensions/hooks directory
Thanks to Eli
- TW-1877 task done, task edit, task is now pending
Thanks to Eric Hymowitz
- TW-1878 uuids subcommand produces a space-delimited list, not comma-delimited
Thanks to Scott Kostyshak
- TW-1881 Missing last character(s) in Description field
Thanks to Hubert Toullec
- TW-1881 default.scheduled seems not to work
Thanks to Onion
- TW-1885 Task Sync does not send TLS SNI headers
Thanks to Dan Callahan
- TW-1903 grammar error -- There are 1 local changes.
Thanks to Eric Hymowitz
- TW-1906/#1919 sync sub-command is missing from task(1) manual page
Thanks to rjc
- TW-1910 unreachable statement
Thanks to Martin Strunz
- TW-1917/#1930 "above" does a string comparison, even when the value is numeric
Thanks to Dirk Deimeke
- TW-1930 Typo in help
Thanks to Kai HTML
- TW-1935 Separate verbosity category for rc overrides
Thanks to Paul J. Fenwick
- TW-1936 Tweak tests to have fuller TAP compliance
Thanks to Paul J. Fenwick
- TW-1938 Adjust behaviour of new-uuid and new-id verbosity levels
Thanks to Paul J. Fenwick
- TW-1947 "urgency.over" filter seems to not work correct
Thanks to Marc Richter
- TW #1964 task burndown shows extra brackets #1964
Thanks to php-coder
- TW #1966 Tests: Don't hardcode errno constants #1966
Thanks to Jakub Wilk
- TW #1973 Don't nag when no tasks are READY
Thanks to Martin F. Krafft
- TW #1986 [Nit] Update DEVELOPER.md after migration to Github
Thanks to Kirill Bobyrev
- TW #1922 Can't find export scripts
Thanks to tom-doerr
- TW #2020 reserved.lines is not affecting the burndown height
Thanks to ad₋si
- TW #2047 Exiting the task editor with an error code doesn't remove the lock file
Thanks to coaxial
- TW #2051 doc/man: ready tasks sorted with started tasks 1st
Thanks to Simon Désaulniers
- TW #2053 Do not set CMP0037 on CMake 3.11.0 and above
Thanks to Janik Rabe
- #2077 Change taskrc override priority, respect verbose override, refactor.
Thanks to taiyu-len
- #2108 CmdHistory: repeat unit if a larger unit changes
Thanks to Janik Rabe
- #2132 JSON encode/decode string UDAs
Thanks to Chad Phillips
- #2176 How to get the full list of tags ?
Thanks to Adrien Lemaire
- #2091 duration of task is set to a wrong and extremely big value
Thanks to Wray Zheng
- Added 'juhannus' as a synonym for 'midsommarafton'
Thanks to Lynoure Braakman
- Deprecated the 'DUETODAY' virtual tag, which is a synonym for the 'TODAY'
virtual tag.
- Removed deprecated 'alias._query' setting.
- Fixed ambiguity in the esp-ESP localization
Thanks to Fidel Mato
- Deprecated the 'new-uuid' verbosity option, since its functionality can be
removed by merging with 'new-id'.
- Correct a false-positive warning when a due date is removed and a wait is
added.
- Added 'QUARTER' virtual tag.
- Fixed unquoted glob in bash completion script
Thanks to Ran Benita
- Deprecated use of alternate Boolean configuration settings. Use values "0" for
off, and "1" for on. Avoid used of "on", "off", "true", "t", "false", "f",
"yes", "y", "no", "n".
- Fixed test harness for Python 3.x.
Thanks to jrabbit
- Improved certificate validation diagnostics
Thanks to Jelle van der Waa
- Improved portability for SunOS-like OSes.
Thanks to Antonio Huete Jimenez
- Updated the 'timesheet' command with a more compact report that accepts a
filter, and has a default filter showing the last four weeks of completed and
started tasks.
- Added 'history.weekly', 'history.daily', 'ghistory.weekly', 'ghistory.daily'
report variations, with code refactoring.
Thanks to Lukas Barth
- New DOM references: annotations.count, tw.syncneeded, tw.program, tw.args,
tw.width, tw.height, tw.version.
- The message telling you to sync now indicates how many local changes will be
synced.
- Removed compile-time language settings and I18N.
- Workaround for alias grep=rg in fish
Thanks to Lionel Miller.
- Do not set CMP0037 on CMake 3.11.0 and above
Thanks to Janik Rabe
0.10.4
======
2021-07-29
* DROPPED support for Python 3.5
* CHANGE ikhal: tab (and shift tab) jump from the events back to the calendar
* NEW Add symbol for events with at least one alarm
* FIX URL can now be set/updated from ikhal
* FIX Imported events without an end or duration will now last one day if
`DTSTART` is a date (as per RFC) or one hour if it is a datetime.
0.10.3
======
2021-04-27
* DROPPED support for Python 3.4
* FIX `khal interactive` now accepts -a/-d options (as documented)
* FIX Strip whitespace when loading `displayname` and `color` files
* FIX Warn when loading events with a recurrence that finishes before it starts
* FIX Warn when loading events with a recurrence that never occurs
* FIX Alarms without descriptions no longer crash `ikhal`
* FIX Display all-day events at the top of the day in `ikhal`
* FIX Keybindings in empty search results no longer crash `ikhal`
* NEW Possibility to add a blank line before day in `khal` with
`blank_line_before_day` option
* FIX `new` keybinding in search no longer crash `ikhal`
* NEW Improved sorting of events. Sort by `DTSTART`, `DTEND` then `SUMMARY`.
* NEW Add url input and `{url}` template option
Version 2.8.2 (2021-07-08)
==========================
Data updates
------------
- Updated tzdata version to 2021a.
Bugfixes
--------
- Fixed a bug in the parser where non-``ValueError`` exceptions would be raised
during exception handling; this would happen, for example, if an
``IllegalMonthError`` was raised in ``dateutil`` code.
- Fixed the custom ``repr`` for ``dateutil.parser.ParserError``, which was not
defined due to an indentation error.
- Fixed a bug that caused ``b'`` prefixes to appear in parse_isodate exception
messages.
- Make ``isoparse`` raise when trying to parse times with inconsistent use of
`:` separator.
- Fixed ``tz.gettz()`` not returning local time when passed an empty string.
Documentation changes
---------------------
- Rearranged parser documentation into "Functions", "Classes" and "Warnings and
Exceptions" categories.
- Updated ``parser.parse`` documentation to reflect the switch from
``ValueError`` to ``ParserError``.
- Fixed methods in the ``rrule`` module not being displayed in the docs.
- Changed some relative links in the exercise documentation to refer to the
document locations in the input tree, rather than the generated HTML files in
the HTML output tree (which presumably will not exist in non-HTML output
formats).
Misc
----
- Moved ``test_imports.py``, ``test_internals.py`` and ``test_utils.py`` to
pytest.
- Added project_urls for documentation and source.
- Simplified handling of bytes and bytearray in ``_parser._timelex``.
- Changed the tests against the upstream tz database to always generate fat
binaries, since until GH-590 and GH-1059 are resolved, "slim" zic binaries
will cause problems in many zones, causing the tests to fail. This also
updates ``zoneinfo.rebuild`` to always generate fat binaries.
- Moved sdist and wheel generation to use `python-build`.
Version 0.18.0
==============
Note: Version 0.17 has some alpha releases but ultimately was never finalised.
0.18 actually continues where 0.16 left off.
- Support for Python 3.5 and 3.6 has been dropped. This release mostly focuses
on keeping vdirsyncer compatible with newer environments.
- click 8 and click-threading 0.5.0 are now required.
- For those using ``pipsi``, we now recommend using ``pipx``, it's successor.
- Python 3.9 is now supported.
- Our Debian/Ubuntu build scripts have been updated. New versions should be
pushed to those repositories soon.
(pkgsrc chagnes)
- Add TEST_DEPENDS+=
(upstream changes)
# hms 1.1.0
## Breaking changes
- `"hms"` objects no longer have a common type with `character` and `numeric`. Combining such values previously threw a warning, now throws an error (#94).
- `vec_cast()` and `as_hms()` throw error instead of a warning if input can't be parsed (#68).
## Features
- New `unique.hms()` method (#98, @joethorley).
- `as_hms()` is a generic again (#81).
## Internal
- Avoid `LazyData` in `DESCRIPTION`.
- Bump required versions of ellipsis and vctrs to avoid warning during package load.
- Using lifecycle package (#94).
# hms 1.0.0
## Life cycle
- hms is now marked as "stable".
## Breaking changes
- `"hms"` objects no longer have a common type with `character` and `numeric`. Combining such values previously threw a warning, now throws an error (#94).
- `vec_cast()` and `as_hms()` now throw error instead of a warning if input can't be parsed (#68).
## Features
- `as_hms()` is a generic again (#81).
- `round_hms()` and `trunc_hms()` gain `digits` argument (#78, @hglanz).
## Bug fixes
- `as_hms()` and `vec_cast()` now correctly treat objects of class `"difftime"` with `integer` mode (#84).
## Internal
- Using lifecycle package (#94).
- hms has been re-licensed as MIT (#86).
# hms 0.5.3
- Use `vec_default_ptype2()`, remove `vec_ptype2.hms.unspecified()` (#80, @romainfrancois).
- `vec_ptype2.hms.default()` forwards to `vec_default_ptype2()` for compatibility with vctrs 0.2.1.
- Remove `as.data.frame.hms()`, handeld by vctrs.
# hms 0.5.2.9000
- Internal changes only.
# hms 0.5.2
- Work around parsing error that occurs on DST changeover dates (https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16764).
# hms 0.5.1
- Lossy casts from `character` vectors to `hms` now also trigger a warning if the cast succeeds in the first element of the vector but fails for other elements.
Remove Exporter::Lite from DEPENDS
Upstream changes:
Changes for version 0.16 - 2021-05-19
Switched to plain Exporter, instead of Exporter::Lite. Thanks to Graham Knop for PR.
Upstream changes:
1.54 2020-12-04
- This release contains a lot of small documentation revisions, both to
formatting and content.
1.53 2020-11-08
- Added a $dt->rfc3339 method. Based on discussion in GH #109 by worthmine.
Add LICENSE
Upstream changes:
0.08 2020-12-18
- (Update) Add 'strict' option to require timezone in time components (PR
#3 from @timgimyee).
- (Update) Updated Makefile.PL with new metadata.
Upstream changes:
1.79 2021-05-02
* Fix too-strict type checking for time zones. This module now uses the same
check as DateTime itself, which allows for things that don't subclass
DateTime::TimeZone as long as they provide the same API. Reported by
E. Choroba. GH #30.
Upstream changes:
0.0701 2021-05-22
- Fix versioning, reindex
0.07 2021-05-21
- if microseconds are set on provided DateTime object to time_format,
use them. Fixes RT #136549
version 1.5.0 (release tag v1.5.0.rel)
======================================
* clean-up deprecated calendar specific subclasses.
* added string formatting support to `cftime.datetime` objects
(via `cftime.datetime.__format__`).
* add support for astronomical year numbering (including year zero) for
real-world calendars using 'has_year_zero' cftime.datetime kwarg.
Default is False for 'real-world' calendars ('julian', 'gregorian'/'standard',
'proleptic_gregorian'). Ignored for idealized calendars like '360_day
(they always have year zero).
* add "change_calendar" cftime.datetime method to switch to another
'real-world' calendar. Enable comparison of cftime.datetime instances
with different 'real-world' calendars (using the new change_calendar method)
* remove legacy `utime` class, and legacy `JulianDayFromDate` and
`DateFromJulianDay` functions (replaced by `cftime.datetime.toordinal`
and `cftime.datetime.fromordinal`).
* Change ValueError to TypeError in __sub__
aniso8601 9.0.1
===============
Added
-----
* Development requirements handled by :code:`extras_require` (install with :code:`pip install -e .[dev]`)
* Pre-commit hooks, managed with `pre-commit <https://pre-commit.com/>`_ (install with :code:`pre-commit install`)
* Add :code:`readthedocs.yaml` to make configuration explicit
Changed
-------
* Code formatted with `Black <https://black.readthedocs.io/en/stable/index.html>`_
* Imports sorted with `isort <https://pycqa.github.io/isort/>`_
* Following `Keep a Changelog <https://keepachangelog.com/en/1.0.0/>`_ for this and future CHANGELOG entries
* Removed python-dateutil from :code:`BuildRequires` in specfile as they are no longer required since calendar level duration building was split to a separate project (6.0.0)
* Heading level of top of CHANGELOG
Fixed
-----
* Parsing prescribed durations with only hour and second time components (see `PR 14 <https://bitbucket.org/nielsenb/aniso8601/pull-requests/14>`_)
* Parsing prescribed durations with only year and day components
aniso8601 9.0.0
===============
Changes
-------
* Add support for concise interval format (see `27 <https://bitbucket.org/nielsenb/aniso8601/issues/27/support-for-short-syntax-for-intervals>`_)
* Add explicit bounds of [000, 366] to day of year component :code:`_parse_ordinal_date`, this adds the same limits to dates of the format YYYYDDD or YYYY-DDD when using :code:`parse_date`
* Add :code:`range_check_date`, :code:`range_check_time`, :code:`range_check_duration`, :code:`range_check_repeating_interval`, and :code:`range_check_timezone` range checking class methods to :code:`BaseTimeBuilder` there are no datetime or non-repeating interval check function as they are made of already checked parts
* :code:`PythonTimeBuilder` now calls the appropriate range check functions using the :code:`range_check_date`, :code:`range_check_time`, :code:`range_check_duration`, :code:`range_check_repeating_interval`, and :code:`range_check_timezone` methods defined in :code:`aniso8601.builders`
* Add :code:`range_check_duration` to :code:`PythonTimeBuilder` which calls :code:`BaseTimeBuilder.range_check_duration` and performs additional checks against maximum timedelta size
* Add :code:`range_check_interval` to :code:`PythonTimeBuilder` which handles building concise dates and performs additional checks against maximum timedelta size
* Add :code:`get_datetime_resolution` which behaves like :code:`get_time_resolution` but accepts a ISO 8601 date time as an argument, return value is a :code:`TimeResolution`
* Add :code:`exceptions.RangeCheckError` as a parent type of all failures in the range check methods, it descends from :code:`ValueError`
* Add :code:`get_duration_resolution` which behaves like other resolution helpers, return value is a :code:`DurationResolution`
* Add :code:`get_interval_resolution` which behaves like other resolution helpers, return value is a :code:`IntervalResolution`
* Negative durations now fail at the parse step and simply raise :code:`ISOFormatError`, calling a :code:`PythonTimeBuilder.build_duration` directly with a negative duration component will yield an :code:`ISOFormatError` in the range check
* Raise :code:`DayOutOfBoundsError` if calendar day exceeds number of days in calendar month
* Raise :code:`DayOutOfBoundsError` if ordinal day exceeds number of days in calendar year (366 now raises :code:`DayOutOfBoundsError` in non-leap year)
* Raise :code:`ISOFormatError` when date or time string contains extra whitespace
* Raise :code:`ISOFormatError` on multiple fraction separators (comma, full-stop) in a time string
* Raise :code:`ISOFormatError` when duration contains multiple duration designators ("P"), or time designators ("T")
* :code:`PythonTimeBuilder.build_duration` raises :code:`YearOutOfBoundsError`, :code:`MonthOutOfBoundsError`, :code:`WeekOutOfBoundsError`, :code:`HoursOutOfBoundsError`, :code:`MinutesOutOfBoundsError`, or :code:`SecondsOutOfBoundsError` when a given duration component would result in a :code:`timedelta` that would exceed the maximum size
* Raise :code:`ISOFormatError` if number of delimiters is not exactly 1 in :code:`parse_interval`
* Raise :code:`ISOFormatError` when either part of an interval string before of after the delimiter is empty
* Raise :code:`YearOutOfBoundsError` in :code:`PythonTimeBuilder.build_interval` if an interval with a duration would exceed the maximum or minimum years for Python date objects
* Simplify :code:`parse_date`, :code:`build_date` will now be called with explicit :code:`None` arguments instead of date components not in the parsed string excluded from the call
* Change :code:`get_date_resolution` to call :code:`parse_date` and return the resolution based on the smallest parsed component
* Simplify :code:`parse_time`, :code:`build_time` will now be called with explicit :code:`None` arguments instead of date components not in the parsed string excluded from the call
* Change :code:`get_time_resolution` to call :code:`parse_time` and return the resolution based on the smallest parsed component
* :code:`TupleBuilder` now builds :code:`DateTuple`, :code:`TimeTuple`, :code:`DatetimeTuple`, :code:`DurationTuple`, :code:`IntervalTuple`, :code:`RepeatingIntervalTuple` and :code:`TimezoneTuple` namedtuples
* Simplify :code:`parse_duration`, :code:`build_duration` will now be called with explicit :code:`None` arguments when components of a prescribed duration are not present in the ISO 8601 duration string instead of being excluded from the call
* Remove unused :code:`decimalfraction.find_separator`
* Remove unused :code:`PythonTimeBuilder._split_to_microseconds`
* Removed :code:`NegativeDurationError`
Deprecation
-----------
* **Update on Python 2 support**: Python 2 support was slated to be removed in 7.0.0 but was not, it will remain until a test fails on Python 2 but not Python 3
* Using Setuptools to run tests (:code:`python setup.py tests`) will be removed in the next major or minor version (either 9.1.0, 10.0.0)
version 1.4.1 (release tag v1.4.1.rel)
======================================
* Restore use of calendar-specific sub-classes in `cftime.num2date`,
`cftime.datetime.__add__`, and `cftime.datetime.__sub__`. The use of them
will be removed in a later release.
* add 'fromordinal' static method to create a cftime.datetime instance
from a julian day ordinal and calendar (inverse of 'toordinal').
version 1.4.0 (release tag v1.4.0.rel)
======================================
* `cftime.date2num` will now always return an array of integers, if the units
and times allow. Previously this would only be true if the units were
'microseconds'. In other circumstances, as before, `cftime.date2num`
will return an array of floats.
* Rewrite of julian day/calendar functions (_IntJulianDayToCalendar and
_IntJulianDayFromCalendar) to remove GPL'ed code. cftime license
changed to MIT (to be consistent with netcdf4-python).
* Added datetime.toordinal() (returns julian day, kwarg 'fractional'
can be used to include fractional day).
* cftime.datetime no longer uses calendar-specific sub-classes.
version 1.3.1 (release tag v1.3.1rel)
=====================================
* fix for issue 211 bug in masked array handling in date2num)
* switch from travis/appveyor to github actions for CI/CD.
* switch to cython language_level=3 (no more support for python 2).
* add __init__.py to test dir so pytest coverage works again. Add Coveralls
step to github actions workflow to upload coverage data to coveralls.io
* move package under 'src' directory so cftime can be imported
from install dir
version 1.3.0 (release tag v1.3.0rel)
=====================================
* zero pad years in strtime
* have cftime.datetime constuctor create 'calendar-aware' instances (default is
'standard' calendar, if calendar='' or None the instance is not calendar aware and some
methods, like dayofwk, dayofyr, __add__ and __sub__, will not work).
The calendar specific sub-classes are now deprecated, but remain for now
as stubs that just instantiate the base class and override __repr__.
* update regex in _cpdef _parse_date so reference years with more than four
digits can be handled.
* Change default calendar in cftime.date2num from 'standard' to None
(calendar associated with first input datetime object is used).
* add `cftime.datetime.tzinfo=None` for compatibility with python datetime
.
version 1.2.1 (release tag v1.2.1rel)
=====================================
* num2date uses 'proleptic_gregorian' scheme when basedate is post-Gregorian but date is pre-Gregorian
.
* fix 1.2.0 regression (date2num no longer works with numpy scalar array inputs).
* Fix for issue 187 (have date2num round to the nearest second when within 1
microsecond).
* Fix for issue 189 (leap years calculated incorrectly for negative years in
proleptic_gregorian calendar).
version 1.2.0 (release tag v1.2.0rel)
=====================================
* Return the default values of dayofwk and dayofyr when calendar
is ''.
* fix treatment of masked arrays in num2date and date2num.
Also make sure masked arrays are output from num2date/date2num if
masked arrays are input.
* Where possible, use timedelta arithmetic to decode times exactly within
num2date.
* Make taking the difference between two cftime datetimes to produce a
timedelta exact to the microsecond; depending on the units encoding,
this enables date2num to be exact as well.
* utime.date2num/utime.num2date now just call module level functions.
JulianDayFromDate/DateFromJulianDay no longer used internally.