Hello community,
here is the log from the commit of package python-aniso8601 for
openSUSE:Factory checked in at 2019-03-11 13:51:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-aniso8601 (Old)
and /work/SRC/openSUSE:Factory/.python-aniso8601.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-aniso8601"
Mon Mar 11 13:51:38 2019 rev:4 rq:683738 version:6.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-aniso8601/python-aniso8601.changes
2019-03-06 15:52:19.720424667 +0100
+++
/work/SRC/openSUSE:Factory/.python-aniso8601.new.28833/python-aniso8601.changes
2019-03-11 13:51:41.825254893 +0100
@@ -1,0 +2,6 @@
+Mon Mar 11 09:45:08 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 6.0.0:
+ * Remove previously deprecated built in version of relativetimebuilder
+
+-------------------------------------------------------------------
Old:
----
aniso8601-5.1.0.tar.gz
New:
----
aniso8601-6.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-aniso8601.spec ++++++
--- /var/tmp/diff_new_pack.QcLebo/_old 2019-03-11 13:51:43.429253843 +0100
+++ /var/tmp/diff_new_pack.QcLebo/_new 2019-03-11 13:51:43.469253817 +0100
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define modname aniso8601
Name: python-%{modname}
-Version: 5.1.0
+Version: 6.0.0
Release: 0
Summary: A library for parsing ISO 8601 strings
License: BSD-3-Clause
++++++ aniso8601-5.1.0.tar.gz -> aniso8601-6.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/aniso8601-5.1.0/PKG-INFO new/aniso8601-6.0.0/PKG-INFO
--- old/aniso8601-5.1.0/PKG-INFO 2019-03-02 02:09:36.000000000 +0100
+++ new/aniso8601-6.0.0/PKG-INFO 2019-03-08 21:10:19.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 1.1
Name: aniso8601
-Version: 5.1.0
+Version: 6.0.0
Summary: A library for parsing ISO 8601 strings.
Home-page: https://bitbucket.org/nielsenb/aniso8601
Author: Brandon Nielsen
@@ -186,56 +186,6 @@
>>> aniso8601.parse_duration('P0001-01-02T01:30:5')
datetime.timedelta(397, 5405)
- **The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
- The above treat years as 365 days and months as 30 days. If calendar
level accuracy is required, the provided :code:`RelativeTimeBuilder` can be
used if `dateutil <https://pypi.python.org/pypi/python-dateutil>`_ is
installed::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> from datetime import date
- >>> one_month = aniso8601.parse_duration('P1M',
builder=RelativeTimeBuilder)
- >>> two_months = aniso8601.parse_duration('P2M',
builder=RelativeTimeBuilder)
- >>> print one_month
- relativedelta(months=+1)
- >>> print two_months
- relativedelta(months=+2)
- >>> date(2003,1,27) + one_month
- datetime.date(2003, 2, 27)
- >>> date(2003,1,31) + one_month
- datetime.date(2003, 2, 28)
- >>> date(2003,1,31) + two_months
- datetime.date(2003, 3, 31)
-
- Fractional years and months do not make sense for relative durations.
a :code:`RelativeValueError` is raised when attempting to construct a duration
with fractional month or year with the :code:`RelativeTimeBuilder`::
-
- >>> aniso8601.parse_duration('P2.1Y', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in
_parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years
are not defined for relative durations.
-
- When attempting to construct a duration using a
:code:`RelativeTimeBuilder` without dateutil available, a :code:`RuntimeError`
is raised::
-
- >>> aniso8601.parse_duration('P1M', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in
_parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Parsing intervals
-----------------
@@ -304,53 +254,6 @@
currentdate += timedelta
OverflowError: date value out of range
- **The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
- The above treat years as 365 days and months as 30 days. If calendar
level accuracy is required, the provided :code:`RelativeTimeBuilder` can be
used if `dateutil <https://pypi.python.org/pypi/python-dateutil>`_ is
installed::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> aniso8601.parse_interval('2003-01-27/P1M',
builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27))
- >>> aniso8601.parse_interval('2003-01-31/P1M',
builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28))
- >>> aniso8601.parse_interval('P1Y/2001-02-28',
builder=RelativeTimeBuilder)
- (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28))
-
- Fractional years and months do not make sense for relative intervals.
A :code:`RelativeValueError` is raised when attempting to construct an interval
with a fractional month or year with the :code:`RelativeTimeBuilder`::
-
- >>> aniso8601.parse_interval('P1.1Y/2001-02-28',
builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 98, in _parse_interval
- return builder.build_interval(end=enddate, duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years
are not defined for relative durations.
-
- When attempting to construct an interval using a
:code:`RelativeTimeBuilder` without dateutil available, a :code:`RuntimeError`
is raised::
-
- >>> aniso8601.parse_interval('2003-01-27/P1M',
builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 117, in _parse_interval
- duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Date and time resolution
------------------------
@@ -377,13 +280,15 @@
Builders
========
- **The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
Builders can be used to change the output format of a parse operation.
All parse functions have a :code:`builder` keyword argument which accepts a
builder class.
- Three builders are included. The :code:`PythonTimeBuilder` (the
default) in the :code:`aniso8601.builders.python` module, :code:`TupleBuilder`
which returns the parse result as a tuple of strings and is located in the
:code:`aniso8601.builders` module, and the :code:`RelativeTimeBuilder` which
allows for calendar level accuracy of duration and interval operations and is
located in the :code:`aniso8601.builders.relative` module.
+ Two builders are included. The :code:`PythonTimeBuilder` (the default)
in the :code:`aniso8601.builders.python` module, and the :code:`TupleBuilder`
which returns the parse result as a tuple of strings and is located in the
:code:`aniso8601.builders` module.
- A `NumPyTimeBuilder
<https://bitbucket.org/nielsenb/numpytimebuilder>`_ is available separately
which supports parsing directly to `NumPy datetime64 and timedelta64 types
<https://docs.scipy.org/doc/numpy/reference/arrays.datetime.html>`_.
+ The following builders are available as separate projects:
+
+ * `RelativeTimeBuilder
<https://bitbucket.org/nielsenb/relativetimebuilder>`_ supports parsing to
`datetutil relativedelta
types<https://dateutil.readthedocs.io/en/stable/relativedelta.html>`_ for
calendar level accuracy
+ * `AttoTimeBuilder <https://bitbucket.org/nielsenb/attotimebuilder>_`
supports parsing directly to `attotime attodatetime and attotimedelta types
<https://bitbucket.org/nielsenb/attotime>`_ which support sub-nanosecond
precision
+ * `NumPyTimeBuilder
<https://bitbucket.org/nielsenb/numpytimebuilder>`_ supports parsing directly
to `NumPy datetime64 and timedelta64 types
<https://docs.scipy.org/doc/numpy/reference/arrays.datetime.html>`_
TupleBuilder
------------
@@ -463,126 +368,6 @@
>>>
aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00',
builder=TupleBuilder)
(True, None, (None, (('1980', '03', '05', None, None, None, 'date'),
('01', '01', '00', None, 'time'), 'datetime'), (None, None, None, None, '1',
'2', None, 'duration'), 'interval'), 'repeatinginterval')
- RelativeTimeBuilder
- -------------------
-
- **The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
- The :code:`RelativeTimeBuilder` uses `python-dateutil
<https://pypi.python.org/pypi/python-dateutil>`_ (if installed) to add calendar
level accuracy to duration and interval parses. It is located in the
:code:`aniso8601.builders.relative` module.
-
- Datetimes
- ^^^^^^^^^
-
- Same as :code:`PythonTimeBuilder`.
-
- Dates
- ^^^^^
-
- Same as :code:`PythonTimeBuilder`.
-
- Times
- ^^^^^
-
- Same as :code:`PythonTimeBuilder`.
-
- Durations
- ^^^^^^^^^
-
- Parse will result in a :code:`relativedelta`::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> one_month = aniso8601.parse_duration('P1M',
builder=RelativeTimeBuilder)
- >>> two_months = aniso8601.parse_duration('P2M',
builder=RelativeTimeBuilder)
- >>> print one_month
- relativedelta(months=+1)
- >>> print two_months
- relativedelta(months=+2)
- >>> date(2003,1,27) + one_month
- datetime.date(2003, 2, 27)
- >>> date(2003,1,31) + one_month
- datetime.date(2003, 2, 28)
- >>> date(2003,1,31) + two_months
- datetime.date(2003, 3, 31)
-
- Since a relative fractional month or year is not logical, a
:code:`RelativeValueError` is raised when attempting to parse a duration with
:code:`relative=True` and fractional month or year::
-
- >>> aniso8601.parse_duration('P2.1Y', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in
_parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years
are not defined for relative durations.
-
- If python-dateutil is not available, a :code:`RuntimeError` is raised::
-
- >>> aniso8601.parse_duration('P1M', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in
_parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
- Intervals
- ^^^^^^^^^
-
- Interval parse results will be calculated using a
:code:`relativedelta` internally, allowing for calendar level accuracy::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> aniso8601.parse_interval('2003-01-27/P1M',
builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27))
- >>> aniso8601.parse_interval('2003-01-31/P1M',
builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28))
- >>> aniso8601.parse_interval('P1Y/2001-02-28',
builder=RelativeTimeBuilder)
- (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28))
-
- Fractional years and months do not make sense for relative intervals.
A :code:`RelativeValueError` is raised when attempting to parse an interval
with :code:`relative=True` and a fractional month or year::
-
- >>> aniso8601.parse_interval('P1.1Y/2001-02-28',
builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 98, in _parse_interval
- return builder.build_interval(end=enddate, duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years
are not defined for relative durations.
-
- If python-dateutil is not available, a :code:`RuntimeError` is raised::
-
- >>> aniso8601.parse_interval('2003-01-27/P1M',
builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 117, in _parse_interval
- duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Development
===========
@@ -591,10 +376,6 @@
It is recommended to develop using a `virtualenv
<https://virtualenv.pypa.io/en/stable/>`_.
- The tests require the :code:`relative` feature to be enabled, install
the necessary dependencies using pip::
-
- $ pip install .[relative]
-
Tests
-----
@@ -634,4 +415,3 @@
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Provides-Extra: relative
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/aniso8601-5.1.0/README.rst
new/aniso8601-6.0.0/README.rst
--- old/aniso8601-5.1.0/README.rst 2019-03-01 21:54:25.000000000 +0100
+++ new/aniso8601-6.0.0/README.rst 2019-03-08 21:07:09.000000000 +0100
@@ -175,56 +175,6 @@
>>> aniso8601.parse_duration('P0001-01-02T01:30:5')
datetime.timedelta(397, 5405)
-**The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
-The above treat years as 365 days and months as 30 days. If calendar level
accuracy is required, the provided :code:`RelativeTimeBuilder` can be used if
`dateutil <https://pypi.python.org/pypi/python-dateutil>`_ is installed::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> from datetime import date
- >>> one_month = aniso8601.parse_duration('P1M', builder=RelativeTimeBuilder)
- >>> two_months = aniso8601.parse_duration('P2M', builder=RelativeTimeBuilder)
- >>> print one_month
- relativedelta(months=+1)
- >>> print two_months
- relativedelta(months=+2)
- >>> date(2003,1,27) + one_month
- datetime.date(2003, 2, 27)
- >>> date(2003,1,31) + one_month
- datetime.date(2003, 2, 28)
- >>> date(2003,1,31) + two_months
- datetime.date(2003, 3, 31)
-
-Fractional years and months do not make sense for relative durations. a
:code:`RelativeValueError` is raised when attempting to construct a duration
with fractional month or year with the :code:`RelativeTimeBuilder`::
-
- >>> aniso8601.parse_duration('P2.1Y', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in _parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years are not
defined for relative durations.
-
-When attempting to construct a duration using a :code:`RelativeTimeBuilder`
without dateutil available, a :code:`RuntimeError` is raised::
-
- >>> aniso8601.parse_duration('P1M', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in _parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Parsing intervals
-----------------
@@ -293,53 +243,6 @@
currentdate += timedelta
OverflowError: date value out of range
-**The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
-The above treat years as 365 days and months as 30 days. If calendar level
accuracy is required, the provided :code:`RelativeTimeBuilder` can be used if
`dateutil <https://pypi.python.org/pypi/python-dateutil>`_ is installed::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> aniso8601.parse_interval('2003-01-27/P1M', builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27))
- >>> aniso8601.parse_interval('2003-01-31/P1M', builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28))
- >>> aniso8601.parse_interval('P1Y/2001-02-28', builder=RelativeTimeBuilder)
- (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28))
-
-Fractional years and months do not make sense for relative intervals. A
:code:`RelativeValueError` is raised when attempting to construct an interval
with a fractional month or year with the :code:`RelativeTimeBuilder`::
-
- >>> aniso8601.parse_interval('P1.1Y/2001-02-28', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 98, in _parse_interval
- return builder.build_interval(end=enddate, duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years are not
defined for relative durations.
-
-When attempting to construct an interval using a :code:`RelativeTimeBuilder`
without dateutil available, a :code:`RuntimeError` is raised::
-
- >>> aniso8601.parse_interval('2003-01-27/P1M', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 117, in _parse_interval
- duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Date and time resolution
------------------------
@@ -366,13 +269,15 @@
Builders
========
-**The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
Builders can be used to change the output format of a parse operation. All
parse functions have a :code:`builder` keyword argument which accepts a builder
class.
-Three builders are included. The :code:`PythonTimeBuilder` (the default) in
the :code:`aniso8601.builders.python` module, :code:`TupleBuilder` which
returns the parse result as a tuple of strings and is located in the
:code:`aniso8601.builders` module, and the :code:`RelativeTimeBuilder` which
allows for calendar level accuracy of duration and interval operations and is
located in the :code:`aniso8601.builders.relative` module.
+Two builders are included. The :code:`PythonTimeBuilder` (the default) in the
:code:`aniso8601.builders.python` module, and the :code:`TupleBuilder` which
returns the parse result as a tuple of strings and is located in the
:code:`aniso8601.builders` module.
-A `NumPyTimeBuilder <https://bitbucket.org/nielsenb/numpytimebuilder>`_ is
available separately which supports parsing directly to `NumPy datetime64 and
timedelta64 types
<https://docs.scipy.org/doc/numpy/reference/arrays.datetime.html>`_.
+The following builders are available as separate projects:
+
+* `RelativeTimeBuilder <https://bitbucket.org/nielsenb/relativetimebuilder>`_
supports parsing to `datetutil relativedelta
types<https://dateutil.readthedocs.io/en/stable/relativedelta.html>`_ for
calendar level accuracy
+* `AttoTimeBuilder <https://bitbucket.org/nielsenb/attotimebuilder>_` supports
parsing directly to `attotime attodatetime and attotimedelta types
<https://bitbucket.org/nielsenb/attotime>`_ which support sub-nanosecond
precision
+* `NumPyTimeBuilder <https://bitbucket.org/nielsenb/numpytimebuilder>`_
supports parsing directly to `NumPy datetime64 and timedelta64 types
<https://docs.scipy.org/doc/numpy/reference/arrays.datetime.html>`_
TupleBuilder
------------
@@ -452,126 +357,6 @@
>>> aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00',
builder=TupleBuilder)
(True, None, (None, (('1980', '03', '05', None, None, None, 'date'), ('01',
'01', '00', None, 'time'), 'datetime'), (None, None, None, None, '1', '2',
None, 'duration'), 'interval'), 'repeatinginterval')
-RelativeTimeBuilder
--------------------
-
-**The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
-The :code:`RelativeTimeBuilder` uses `python-dateutil
<https://pypi.python.org/pypi/python-dateutil>`_ (if installed) to add calendar
level accuracy to duration and interval parses. It is located in the
:code:`aniso8601.builders.relative` module.
-
-Datetimes
-^^^^^^^^^
-
-Same as :code:`PythonTimeBuilder`.
-
-Dates
-^^^^^
-
-Same as :code:`PythonTimeBuilder`.
-
-Times
-^^^^^
-
-Same as :code:`PythonTimeBuilder`.
-
-Durations
-^^^^^^^^^
-
-Parse will result in a :code:`relativedelta`::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> one_month = aniso8601.parse_duration('P1M', builder=RelativeTimeBuilder)
- >>> two_months = aniso8601.parse_duration('P2M', builder=RelativeTimeBuilder)
- >>> print one_month
- relativedelta(months=+1)
- >>> print two_months
- relativedelta(months=+2)
- >>> date(2003,1,27) + one_month
- datetime.date(2003, 2, 27)
- >>> date(2003,1,31) + one_month
- datetime.date(2003, 2, 28)
- >>> date(2003,1,31) + two_months
- datetime.date(2003, 3, 31)
-
-Since a relative fractional month or year is not logical, a
:code:`RelativeValueError` is raised when attempting to parse a duration with
:code:`relative=True` and fractional month or year::
-
- >>> aniso8601.parse_duration('P2.1Y', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in _parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years are not
defined for relative durations.
-
-If python-dateutil is not available, a :code:`RuntimeError` is raised::
-
- >>> aniso8601.parse_duration('P1M', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in _parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
-Intervals
-^^^^^^^^^
-
-Interval parse results will be calculated using a :code:`relativedelta`
internally, allowing for calendar level accuracy::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> aniso8601.parse_interval('2003-01-27/P1M', builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27))
- >>> aniso8601.parse_interval('2003-01-31/P1M', builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28))
- >>> aniso8601.parse_interval('P1Y/2001-02-28', builder=RelativeTimeBuilder)
- (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28))
-
-Fractional years and months do not make sense for relative intervals. A
:code:`RelativeValueError` is raised when attempting to parse an interval with
:code:`relative=True` and a fractional month or year::
-
- >>> aniso8601.parse_interval('P1.1Y/2001-02-28', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 98, in _parse_interval
- return builder.build_interval(end=enddate, duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years are not
defined for relative durations.
-
-If python-dateutil is not available, a :code:`RuntimeError` is raised::
-
- >>> aniso8601.parse_interval('2003-01-27/P1M', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 117, in _parse_interval
- duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Development
===========
@@ -580,10 +365,6 @@
It is recommended to develop using a `virtualenv
<https://virtualenv.pypa.io/en/stable/>`_.
-The tests require the :code:`relative` feature to be enabled, install the
necessary dependencies using pip::
-
- $ pip install .[relative]
-
Tests
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/aniso8601-5.1.0/aniso8601/builders/relative.py
new/aniso8601-6.0.0/aniso8601/builders/relative.py
--- old/aniso8601-5.1.0/aniso8601/builders/relative.py 2019-03-01
21:54:25.000000000 +0100
+++ new/aniso8601-6.0.0/aniso8601/builders/relative.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2019, Brandon Nielsen
-# All rights reserved.
-#
-# This software may be modified and distributed under the terms
-# of the BSD license. See the LICENSE file for details.
-
-from relativetimebuilder import RelativeTimeBuilder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/aniso8601-5.1.0/aniso8601/builders/tests/test_relative.py
new/aniso8601-6.0.0/aniso8601/builders/tests/test_relative.py
--- old/aniso8601-5.1.0/aniso8601/builders/tests/test_relative.py
2019-03-01 21:54:25.000000000 +0100
+++ new/aniso8601-6.0.0/aniso8601/builders/tests/test_relative.py
1970-01-01 01:00:00.000000000 +0100
@@ -1,574 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2019, Brandon Nielsen
-# All rights reserved.
-#
-# This software may be modified and distributed under the terms
-# of the BSD license. See the LICENSE file for details.
-
-import datetime
-import unittest
-import dateutil.relativedelta
-
-from aniso8601 import compat
-from aniso8601.builders.relative import RelativeTimeBuilder
-from aniso8601.utcoffset import UTCOffset
-from relativetimebuilder import RelativeValueError
-
-class TestRelativeTimeBuilder(unittest.TestCase):
- def test_build_duration(self):
- testtuples = (({'PnY': '1'},
- dateutil.relativedelta.relativedelta(years=1)),
- ({'PnM': '1'},
- #Add the relative ‘days’ argument to the absolute day.
Notice that the ‘weeks’ argument is multiplied by 7 and added to ‘days’.
-
#http://dateutil.readthedocs.org/en/latest/relativedelta.html
- dateutil.relativedelta.relativedelta(months=1)),
- ({'PnW': '1'},
- dateutil.relativedelta.relativedelta(days=7)),
- ({'PnW': '1.5'},
- dateutil.relativedelta.relativedelta(days=10,
hours=12)),
- ({'PnD': '1'},
- dateutil.relativedelta.relativedelta(days=1)),
- ({'PnD': '1.5'},
- dateutil.relativedelta.relativedelta(days=1, hours=12)),
- ({'PnY': '1', 'PnM': '2', 'PnD': '3'},
- dateutil.relativedelta.relativedelta(years=1, months=2,
- days=3)),
- ({'PnY': '1', 'PnM': '2', 'PnD': '3.5'},
- dateutil.relativedelta.relativedelta(years=1, months=2,
- days=3, hours=12)),
- ({'PnY': '1', 'PnM': '2', 'PnD': '3',
- 'TnH': '4', 'TnM': '54', 'TnS': '6.5'},
- dateutil.relativedelta.relativedelta(years=1, months=2,
- days=3, hours=4,
- minutes=54,
- seconds=6,
- microseconds=
- 500000)),
- ({'PnY': '0003', 'PnM': '06', 'PnD': '04',
- 'TnH': '12', 'TnM': '30', 'TnS': '05'},
- dateutil.relativedelta.relativedelta(years=3, months=6,
- days=4, hours=12,
- minutes=30,
- seconds=5)),
- ({'PnY': '0003', 'PnM': '06', 'PnD': '04',
- 'TnH': '12', 'TnM': '30', 'TnS': '05.5'},
- dateutil.relativedelta.relativedelta(years=3, months=6,
- days=4, hours=12,
- minutes=30,
- seconds=5,
- microseconds=
- 500000)),
- ({'TnH': '4', 'TnM': '54', 'TnS': '6.5'},
- dateutil.relativedelta.relativedelta(hours=4,
- minutes=54,
- seconds=6,
- microseconds=
- 500000)),
- #Make sure we truncate, not round
-
#https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is
- ({'PnW': '1.9999999999997'},
- dateutil.relativedelta.relativedelta(days=13, hours=23,
- minutes=59,
- seconds=59,
- microseconds=
- 999999)),
- ({'PnD': '1.999999999997'},
- dateutil.relativedelta.relativedelta(days=1, hours=23,
- minutes=59,
- seconds=59,
- microseconds=
- 999999)),
- ({'TnH': '14.99999999997'},
- dateutil.relativedelta.relativedelta(hours=14,
minutes=59,
- seconds=59,
-
microseconds=999999)),
- ({'TnM': '0.00000000999'},
- dateutil.relativedelta.relativedelta(0)),
- ({'TnM': '0.0000000999'},
- dateutil.relativedelta.relativedelta(microseconds=5)),
- ({'TnS': '0.0000001'},
- dateutil.relativedelta.relativedelta(0)),
- ({'TnS': '2.0000048'},
- dateutil.relativedelta.relativedelta(seconds=2,
- microseconds=4)),
- ({'PnY': '0001', 'PnM': '02', 'PnD': '03',
- 'TnH': '14', 'TnM': '43', 'TnS': '59.9999997'},
- dateutil.relativedelta.relativedelta(years=1, months=2,
- days=3, hours=14,
- minutes=43,
- seconds=59,
- microseconds=
- 999999)),
- ({'PnY': '1', 'PnM': '2', 'PnW': '4', 'PnD': '3',
- 'TnH': '5', 'TnM': '6', 'TnS': '7.0000091011'},
- dateutil.relativedelta.relativedelta(years=1, months=2,
- days=31, hours=5,
- minutes=6,
- seconds=7,
- microseconds=9)))
-
- for testtuple in testtuples:
- result = RelativeTimeBuilder.build_duration(**testtuple[0])
- self.assertEqual(result, testtuple[1])
-
- def test_build_duration_fractional_year(self):
- with self.assertRaises(RelativeValueError):
- RelativeTimeBuilder.build_duration(PnY='1.5')
-
- def test_build_duration_fractional_month(self):
- with self.assertRaises(RelativeValueError):
- RelativeTimeBuilder.build_duration(PnM='1.5')
-
- def test_build_duration_nodateutil(self):
- import sys
- import dateutil
-
- dateutil_import = dateutil
-
- sys.modules['dateutil'] = None
-
- with self.assertRaises(RuntimeError):
- RelativeTimeBuilder.build_duration()
-
- #Reinstall dateutil
- sys.modules['dateutil'] = dateutil_import
-
- def test_build_interval(self):
- #Intervals are contingent on durations, make sure they work
- #<duration>/<end>
- testtuples = (({'end': (('1981', '04', '05', None, None, None, 'date'),
- ('01', '01', '00', None, 'time'), 'datetime'),
- 'duration': (None, '1', None, None, None, None, None,
- 'duration')},
- datetime.datetime(year=1981, month=4, day=5,
- hour=1, minute=1),
- datetime.datetime(year=1981, month=3, day=5,
- hour=1, minute=1)),
- ({'end': ('1981', '04', '05', None, None, None, 'date'),
- 'duration': (None, '1', None, None, None, None, None,
- 'duration')},
- datetime.date(year=1981, month=4, day=5),
- datetime.date(year=1981, month=3, day=5)),
- ({'end': ('2014', '11', '12', None, None, None, 'date'),
- 'duration': (None, None, None, None, '1', None, None,
- 'duration')},
- datetime.date(year=2014, month=11, day=12),
- datetime.datetime(year=2014, month=11, day=11,
- hour=23)),
- ({'end': ('2014', '11', '12', None, None, None, 'date'),
- 'duration': (None, None, None, None, '4', '54', '6.5',
- 'duration')},
- datetime.date(year=2014, month=11, day=12),
- datetime.datetime(year=2014, month=11, day=11,
- hour=19, minute=5, second=53,
- microsecond=500000)),
- ({'end': (('2050', '03', '01',
- None, None, None, 'date'),
- ('13', '00', '00',
- (False, True, None, None,
- 'Z', 'timezone'), 'time'), 'datetime'),
- 'duration': (None, None, None,
- None, '10', None, None, 'duration')},
- datetime.datetime(year=2050, month=3, day=1,
- hour=13,
- tzinfo=UTCOffset(name='UTC',
- minutes=0)),
- datetime.datetime(year=2050, month=3, day=1,
- hour=3,
- tzinfo=UTCOffset(name='UTC',
- minutes=0))),
- #Make sure we truncate, not round
-
#https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is
-
#https://bitbucket.org/nielsenb/aniso8601/issues/21/sub-microsecond-precision-is-lost-when
- ({'end': ('1989', '03', '01',
- None, None, None, 'date'),
- 'duration': (None, None, '1.9999999999999999',
- None, None, None,
- None, 'duration')},
- datetime.date(year=1989, month=3, day=1),
- datetime.datetime(year=1989, month=2, day=15,
- hour=0, minute=0, second=0,
- microsecond=1)),
- ({'end': ('1989', '03', '01',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- '1.9999999999999999', None, None,
- None, 'duration')},
- datetime.date(year=1989, month=3, day=1),
- datetime.datetime(year=1989, month=2, day=27,
- hour=0, minute=0, second=0,
- microsecond=1)),
- ({'end': ('2001', '01', '01',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, '14.9999999999999999', None,
- None, 'duration')},
- datetime.date(year=2001, month=1, day=1),
- datetime.datetime(year=2000, month=12, day=31,
- hour=9, minute=0, second=0,
- microsecond=1)),
- ({'end': ('2001', '01', '01',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, '0.00000000999',
- None, 'duration')},
- datetime.date(year=2001, month=1, day=1),
- datetime.datetime(year=2001, month=1, day=1)),
- ({'end': ('2001', '01', '01',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, '0.0000000999',
- None, 'duration')},
- datetime.date(year=2001, month=1, day=1),
- datetime.datetime(year=2000, month=12, day=31,
- hour=23, minute=59, second=59,
- microsecond=999995)),
- ({'end': ('2018', '03', '06', None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, None,
- '0.0000001', 'duration')},
- datetime.date(year=2018, month=3, day=6),
- datetime.datetime(year=2018, month=3, day=6)),
- ({'end': ('2018', '03', '06', None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, None,
- '2.0000048', 'duration')},
- datetime.date(year=2018, month=3, day=6),
- datetime.datetime(year=2018, month=3, day=5,
- hour=23, minute=59, second=57,
- microsecond=999996)),
- #<start>/<duration>
- ({'start': ('2018', '03', '06',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, None,
- '0.0000001', 'duration')},
- datetime.date(year=2018, month=3, day=6),
- datetime.datetime(year=2018, month=3, day=6)),
- ({'start': ('2018', '03', '06',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, None,
- '2.0000048', 'duration')},
- datetime.date(year=2018, month=3, day=6),
- datetime.datetime(year=2018, month=3, day=6,
- hour=0, minute=0, second=2,
- microsecond=4)),
- ({'start': (('1981', '04', '05',
- None, None, None, 'date'),
- ('01', '01', '00', None, 'time'),
- 'datetime'),
- 'duration': (None, '1', None,
- '1', None, '1', None, 'duration')},
- datetime.datetime(year=1981, month=4, day=5,
- hour=1, minute=1),
- datetime.datetime(year=1981, month=5, day=6,
- hour=1, minute=2)),
- ({'start': ('1981', '04', '05',
- None, None, None, 'date'),
- 'duration': (None, '1', None,
- '1', None, None, None, 'duration')},
- datetime.date(year=1981, month=4, day=5),
- datetime.date(year=1981, month=5, day=6)),
- ({'start': ('2014', '11', '12',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, '1', None, None, 'duration')},
- datetime.date(year=2014, month=11, day=12),
- datetime.datetime(year=2014, month=11, day=12,
- hour=1, minute=0)),
- ({'start': ('2014', '11', '12',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, '4', '54', '6.5', 'duration')},
- datetime.date(year=2014, month=11, day=12),
- datetime.datetime(year=2014, month=11, day=12,
- hour=4, minute=54, second=6,
- microsecond=500000)),
- ({'start': ('2014', '11', '12',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, '4', '54', '6.5', 'duration')},
- datetime.date(year=2014, month=11, day=12),
- datetime.datetime(year=2014, month=11, day=12,
- hour=4, minute=54, second=6,
- microsecond=500000)),
- ({'start': (('2050', '03', '01',
- None, None, None, 'date'),
- ('13', '00', '00',
- (False, True, None, None,
- 'Z', 'timezone'), 'time'), 'datetime'),
- 'duration': (None, None, None,
- None, '10', None, None, 'duration')},
- datetime.datetime(year=2050, month=3, day=1,
- hour=13,
- tzinfo=UTCOffset(name='UTC',
- minutes=0)),
- datetime.datetime(year=2050, month=3, day=1,
- hour=23,
- tzinfo=UTCOffset(name='UTC',
- minutes=0))),
- #Make sure we truncate, not round
-
#https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is
-
#https://bitbucket.org/nielsenb/aniso8601/issues/21/sub-microsecond-precision-is-lost-when
- ({'start': ('1989', '03', '01',
- None, None, None, 'date'),
- 'duration': (None, None, '1.9999999999999999',
- None, None, None,
- None, 'duration')},
- datetime.date(year=1989, month=3, day=1),
- datetime.datetime(year=1989, month=3, day=14,
- hour=23, minute=59, second=59,
- microsecond=999999)),
- ({'start': ('1989', '03', '01',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- '1.9999999999999999', None, None,
- None, 'duration')},
- datetime.date(year=1989, month=3, day=1),
- datetime.datetime(year=1989, month=3, day=2,
- hour=23, minute=59, second=59,
- microsecond=999999)),
- ({'start': ('2001', '01', '01',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, '14.9999999999999999', None,
- None, 'duration')},
- datetime.date(year=2001, month=1, day=1),
- datetime.datetime(year=2001, month=1, day=1,
- hour=14, minute=59, second=59,
- microsecond=999999)),
- ({'start': ('2001', '01', '01',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, '0.00000000999',
- None, 'duration')},
- datetime.date(year=2001, month=1, day=1),
- datetime.datetime(year=2001, month=1, day=1)),
- ({'start': ('2001', '01', '01',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, '0.0000000999',
- None, 'duration')},
- datetime.date(year=2001, month=1, day=1),
- datetime.datetime(year=2001, month=1, day=1,
- hour=0, minute=0, second=0,
- microsecond=5)),
- ({'start': ('2018', '03', '06',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, None,
- '0.0000001', 'duration')},
- datetime.date(year=2018, month=3, day=6),
- datetime.datetime(year=2018, month=3, day=6)),
- ({'start': ('2018', '03', '06',
- None, None, None, 'date'),
- 'duration': (None, None, None,
- None, None, None,
- '2.0000048', 'duration')},
- datetime.date(year=2018, month=3, day=6),
- datetime.datetime(year=2018, month=3, day=6,
- hour=0, minute=0, second=2,
- microsecond=4)),
- #<start>/<end>
- ({'start': (('1980', '03', '05',
- None, None, None, 'date'),
- ('01', '01', '00', None, 'time'),
- 'datetime'),
- 'end': (('1981', '04', '05',
- None, None, None, 'date'),
- ('01', '01', '00', None, 'time'),
- 'datetime')},
- datetime.datetime(year=1980, month=3, day=5,
- hour=1, minute=1),
- datetime.datetime(year=1981, month=4, day=5,
- hour=1, minute=1)),
- ({'start': (('1980', '03', '05',
- None, None, None, 'date'),
- ('01', '01', '00', None, 'time'),
- 'datetime'),
- 'end': ('1981', '04', '05', None, None, None, 'date')},
- datetime.datetime(year=1980, month=3, day=5,
- hour=1, minute=1),
- datetime.date(year=1981, month=4, day=5)),
- ({'start': ('1980', '03', '05',
- None, None, None, 'date'),
- 'end': (('1981', '04', '05',
- None, None, None, 'date'),
- ('01', '01', '00', None, 'time'),
- 'datetime')},
- datetime.date(year=1980, month=3, day=5),
- datetime.datetime(year=1981, month=4, day=5,
- hour=1, minute=1)),
- ({'start': ('1980', '03', '05',
- None, None, None, 'date'),
- 'end': ('1981', '04', '05',
- None, None, None, 'date')},
- datetime.date(year=1980, month=3, day=5),
- datetime.date(year=1981, month=4, day=5)),
- ({'start': ('1981', '04', '05',
- None, None, None, 'date'),
- 'end': ('1980', '03', '05',
- None, None, None, 'date')},
- datetime.date(year=1981, month=4, day=5),
- datetime.date(year=1980, month=3, day=5)),
- ({'start': (('2050', '03', '01',
- None, None, None, 'date'),
- ('13', '00', '00',
- (False, True, None, None,
- 'Z', 'timezone'), 'time'), 'datetime'),
- 'end': (('2050', '05', '11',
- None, None, None, 'date'),
- ('15', '30', '00',
- (False, True, None, None,
- 'Z', 'timezone'), 'time'), 'datetime')},
- datetime.datetime(year=2050, month=3, day=1,
- hour=13,
- tzinfo=UTCOffset(name='UTC',
- minutes=0)),
- datetime.datetime(year=2050, month=5, day=11,
- hour=15, minute=30,
- tzinfo=UTCOffset(name='UTC',
- minutes=0))),
- #Make sure we truncate, not round
-
#https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is
- ({'start': (('1980', '03', '05',
- None, None, None, 'date'),
- ('01', '01', '00.0000001',
- None, 'time'), 'datetime'),
- 'end': (('1981', '04', '05',
- None, None, None, 'date'),
- ('14', '43', '59.9999997', None, 'time'),
- 'datetime')},
- datetime.datetime(year=1980, month=3, day=5,
- hour=1, minute=1),
- datetime.datetime(year=1981, month=4, day=5,
- hour=14, minute=43, second=59,
- microsecond=999999)),
- #Some relativedelta examples
-
#http://dateutil.readthedocs.org/en/latest/examples.html#relativedelta-examples
- ({'start': ('2003', '1', '27',
- None, None, None, 'date'),
- 'duration': (None, '1', None,
- None, None, None, None, 'duration')},
- datetime.date(year=2003, month=1, day=27),
- datetime.date(year=2003, month=2, day=27)),
- ({'start': ('2003', '1', '31',
- None, None, None, 'date'),
- 'duration': (None, '1', None,
- None, None, None, None, 'duration')},
- datetime.date(year=2003, month=1, day=31),
- datetime.date(year=2003, month=2, day=28)),
- ({'start': ('2003', '1', '31',
- None, None, None, 'date'),
- 'duration': (None, '2', None,
- None, None, None, None, 'duration')},
- datetime.date(year=2003, month=1, day=31),
- datetime.date(year=2003, month=3, day=31)),
- ({'start': ('2000', '2', '28',
- None, None, None, 'date'),
- 'duration': ('1', None, None,
- None, None, None, None, 'duration')},
- datetime.date(year=2000, month=2, day=28),
- datetime.date(year=2001, month=2, day=28)),
- ({'start': ('1999', '2', '28',
- None, None, None, 'date'),
- 'duration': ('1', None, None,
- None, None, None, None, 'duration')},
- datetime.date(year=1999, month=2, day=28),
- datetime.date(year=2000, month=2, day=28)),
- ({'start': ('1999', '3', '1',
- None, None, None, 'date'),
- 'duration': ('1', None, None,
- None, None, None, None, 'duration')},
- datetime.date(year=1999, month=3, day=1),
- datetime.date(year=2000, month=3, day=1)),
- ({'end': ('2001', '2', '28',
- None, None, None, 'date'),
- 'duration': ('1', None, None,
- None, None, None, None, 'duration')},
- datetime.date(year=2001, month=2, day=28),
- datetime.date(year=2000, month=2, day=28)),
- ({'end': ('2001', '3', '1',
- None, None, None, 'date'),
- 'duration': ('1', None, None,
- None, None, None, None, 'duration')},
- datetime.date(year=2001, month=3, day=1),
- datetime.date(year=2000, month=3, day=1)))
-
- for testtuple in testtuples:
- result = RelativeTimeBuilder.build_interval(**testtuple[0])
- self.assertEqual(result[0], testtuple[1])
- self.assertEqual(result[1], testtuple[2])
-
- def test_build_repeating_interval(self):
- #Repeating intervals are contingent on durations, make sure they work
- args = {'Rnn': '3', 'interval': (('1981', '04', '05',
- None, None, None, 'date'),
- None,
- (None, None, None,
- '1', None, None,
- None, 'duration'),
- 'interval')}
- results = list(RelativeTimeBuilder.build_repeating_interval(**args))
-
- self.assertEqual(results[0], datetime.date(year=1981, month=4, day=5))
- self.assertEqual(results[1], datetime.date(year=1981, month=4, day=6))
- self.assertEqual(results[2], datetime.date(year=1981, month=4, day=7))
-
- args = {'Rnn': '11', 'interval': (None,
- (('1980', '03', '05',
- None, None, None, 'date'),
- ('01', '01', '00',
- None, 'time'), 'datetime'),
- (None, None, None,
- None, '1', '2',
- None, 'duration'),
- 'interval')}
- results = list(RelativeTimeBuilder.build_repeating_interval(**args))
-
- for dateindex in compat.range(0, 11):
- self.assertEqual(results[dateindex],
- datetime.datetime(year=1980, month=3, day=5,
- hour=1, minute=1)
- - dateindex * datetime.timedelta(hours=1,
- minutes=2))
-
- #Make sure relative is correctly applied for months
-
#https://bitbucket.org/nielsenb/aniso8601/issues/12/month-intervals-calculated-incorrectly-or
- args = {'Rnn': '4', 'interval': ((('2017', '04', '30',
- None, None, None, 'date'),
- ('00', '00', '00',
- None, 'time'), 'datetime'),
- None,
- (None, '1', None,
- None, None, None, None, 'duration'),
- 'interval')}
- results = list(RelativeTimeBuilder.build_repeating_interval(**args))
-
- self.assertEqual(results[0],
- datetime.datetime(year=2017, month=4, day=30))
- self.assertEqual(results[1],
- datetime.datetime(year=2017, month=5, day=30))
- self.assertEqual(results[2],
- datetime.datetime(year=2017, month=6, day=30))
- self.assertEqual(results[3],
- datetime.datetime(year=2017, month=7, day=30))
-
- args = {'R': True, 'interval': (None,
- (('1980', '03', '05',
- None, None, None, 'date'),
- ('01', '01', '00',
- None, 'time'), 'datetime'),
- (None, None, None,
- None, '1', '2', None, 'duration'),
- 'interval')}
- resultgenerator = RelativeTimeBuilder.build_repeating_interval(**args)
-
- for dateindex in compat.range(0, 11):
- self.assertEqual(next(resultgenerator),
- datetime.datetime(year=1980, month=3, day=5,
- hour=1, minute=1)
- - dateindex * datetime.timedelta(hours=1,
- minutes=2))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/aniso8601-5.1.0/aniso8601.egg-info/PKG-INFO
new/aniso8601-6.0.0/aniso8601.egg-info/PKG-INFO
--- old/aniso8601-5.1.0/aniso8601.egg-info/PKG-INFO 2019-03-02
02:09:36.000000000 +0100
+++ new/aniso8601-6.0.0/aniso8601.egg-info/PKG-INFO 2019-03-08
21:10:19.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 1.1
Name: aniso8601
-Version: 5.1.0
+Version: 6.0.0
Summary: A library for parsing ISO 8601 strings.
Home-page: https://bitbucket.org/nielsenb/aniso8601
Author: Brandon Nielsen
@@ -186,56 +186,6 @@
>>> aniso8601.parse_duration('P0001-01-02T01:30:5')
datetime.timedelta(397, 5405)
- **The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
- The above treat years as 365 days and months as 30 days. If calendar
level accuracy is required, the provided :code:`RelativeTimeBuilder` can be
used if `dateutil <https://pypi.python.org/pypi/python-dateutil>`_ is
installed::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> from datetime import date
- >>> one_month = aniso8601.parse_duration('P1M',
builder=RelativeTimeBuilder)
- >>> two_months = aniso8601.parse_duration('P2M',
builder=RelativeTimeBuilder)
- >>> print one_month
- relativedelta(months=+1)
- >>> print two_months
- relativedelta(months=+2)
- >>> date(2003,1,27) + one_month
- datetime.date(2003, 2, 27)
- >>> date(2003,1,31) + one_month
- datetime.date(2003, 2, 28)
- >>> date(2003,1,31) + two_months
- datetime.date(2003, 3, 31)
-
- Fractional years and months do not make sense for relative durations.
a :code:`RelativeValueError` is raised when attempting to construct a duration
with fractional month or year with the :code:`RelativeTimeBuilder`::
-
- >>> aniso8601.parse_duration('P2.1Y', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in
_parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years
are not defined for relative durations.
-
- When attempting to construct a duration using a
:code:`RelativeTimeBuilder` without dateutil available, a :code:`RuntimeError`
is raised::
-
- >>> aniso8601.parse_duration('P1M', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in
_parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Parsing intervals
-----------------
@@ -304,53 +254,6 @@
currentdate += timedelta
OverflowError: date value out of range
- **The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
- The above treat years as 365 days and months as 30 days. If calendar
level accuracy is required, the provided :code:`RelativeTimeBuilder` can be
used if `dateutil <https://pypi.python.org/pypi/python-dateutil>`_ is
installed::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> aniso8601.parse_interval('2003-01-27/P1M',
builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27))
- >>> aniso8601.parse_interval('2003-01-31/P1M',
builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28))
- >>> aniso8601.parse_interval('P1Y/2001-02-28',
builder=RelativeTimeBuilder)
- (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28))
-
- Fractional years and months do not make sense for relative intervals.
A :code:`RelativeValueError` is raised when attempting to construct an interval
with a fractional month or year with the :code:`RelativeTimeBuilder`::
-
- >>> aniso8601.parse_interval('P1.1Y/2001-02-28',
builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 98, in _parse_interval
- return builder.build_interval(end=enddate, duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years
are not defined for relative durations.
-
- When attempting to construct an interval using a
:code:`RelativeTimeBuilder` without dateutil available, a :code:`RuntimeError`
is raised::
-
- >>> aniso8601.parse_interval('2003-01-27/P1M',
builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 117, in _parse_interval
- duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Date and time resolution
------------------------
@@ -377,13 +280,15 @@
Builders
========
- **The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
Builders can be used to change the output format of a parse operation.
All parse functions have a :code:`builder` keyword argument which accepts a
builder class.
- Three builders are included. The :code:`PythonTimeBuilder` (the
default) in the :code:`aniso8601.builders.python` module, :code:`TupleBuilder`
which returns the parse result as a tuple of strings and is located in the
:code:`aniso8601.builders` module, and the :code:`RelativeTimeBuilder` which
allows for calendar level accuracy of duration and interval operations and is
located in the :code:`aniso8601.builders.relative` module.
+ Two builders are included. The :code:`PythonTimeBuilder` (the default)
in the :code:`aniso8601.builders.python` module, and the :code:`TupleBuilder`
which returns the parse result as a tuple of strings and is located in the
:code:`aniso8601.builders` module.
- A `NumPyTimeBuilder
<https://bitbucket.org/nielsenb/numpytimebuilder>`_ is available separately
which supports parsing directly to `NumPy datetime64 and timedelta64 types
<https://docs.scipy.org/doc/numpy/reference/arrays.datetime.html>`_.
+ The following builders are available as separate projects:
+
+ * `RelativeTimeBuilder
<https://bitbucket.org/nielsenb/relativetimebuilder>`_ supports parsing to
`datetutil relativedelta
types<https://dateutil.readthedocs.io/en/stable/relativedelta.html>`_ for
calendar level accuracy
+ * `AttoTimeBuilder <https://bitbucket.org/nielsenb/attotimebuilder>_`
supports parsing directly to `attotime attodatetime and attotimedelta types
<https://bitbucket.org/nielsenb/attotime>`_ which support sub-nanosecond
precision
+ * `NumPyTimeBuilder
<https://bitbucket.org/nielsenb/numpytimebuilder>`_ supports parsing directly
to `NumPy datetime64 and timedelta64 types
<https://docs.scipy.org/doc/numpy/reference/arrays.datetime.html>`_
TupleBuilder
------------
@@ -463,126 +368,6 @@
>>>
aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00',
builder=TupleBuilder)
(True, None, (None, (('1980', '03', '05', None, None, None, 'date'),
('01', '01', '00', None, 'time'), 'datetime'), (None, None, None, None, '1',
'2', None, 'duration'), 'interval'), 'repeatinginterval')
- RelativeTimeBuilder
- -------------------
-
- **The included RelativeTimeBuilder is deprecated and will no longer be
included as a dependency in aniso8601 6.0.0, install** `relativetimebuilder
<https://pypi.org/project/relativetimebuilder>`_ **instead.**
-
- The :code:`RelativeTimeBuilder` uses `python-dateutil
<https://pypi.python.org/pypi/python-dateutil>`_ (if installed) to add calendar
level accuracy to duration and interval parses. It is located in the
:code:`aniso8601.builders.relative` module.
-
- Datetimes
- ^^^^^^^^^
-
- Same as :code:`PythonTimeBuilder`.
-
- Dates
- ^^^^^
-
- Same as :code:`PythonTimeBuilder`.
-
- Times
- ^^^^^
-
- Same as :code:`PythonTimeBuilder`.
-
- Durations
- ^^^^^^^^^
-
- Parse will result in a :code:`relativedelta`::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> one_month = aniso8601.parse_duration('P1M',
builder=RelativeTimeBuilder)
- >>> two_months = aniso8601.parse_duration('P2M',
builder=RelativeTimeBuilder)
- >>> print one_month
- relativedelta(months=+1)
- >>> print two_months
- relativedelta(months=+2)
- >>> date(2003,1,27) + one_month
- datetime.date(2003, 2, 27)
- >>> date(2003,1,31) + one_month
- datetime.date(2003, 2, 28)
- >>> date(2003,1,31) + two_months
- datetime.date(2003, 3, 31)
-
- Since a relative fractional month or year is not logical, a
:code:`RelativeValueError` is raised when attempting to parse a duration with
:code:`relative=True` and fractional month or year::
-
- >>> aniso8601.parse_duration('P2.1Y', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in
_parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years
are not defined for relative durations.
-
- If python-dateutil is not available, a :code:`RuntimeError` is raised::
-
- >>> aniso8601.parse_duration('P1M', builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/duration.py", line 30, in parse_duration
- return _parse_duration_prescribed(isodurationstr, builder)
- File "aniso8601/duration.py", line 75, in
_parse_duration_prescribed
- return _parse_duration_prescribed_notime(durationstr, builder)
- File "aniso8601/duration.py", line 119, in
_parse_duration_prescribed_notime
- PnW=weekstr, PnD=daystr)
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
- Intervals
- ^^^^^^^^^
-
- Interval parse results will be calculated using a
:code:`relativedelta` internally, allowing for calendar level accuracy::
-
- >>> import aniso8601
- >>> from aniso8601.builders.relative import RelativeTimeBuilder
- >>> aniso8601.parse_interval('2003-01-27/P1M',
builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27))
- >>> aniso8601.parse_interval('2003-01-31/P1M',
builder=RelativeTimeBuilder)
- (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28))
- >>> aniso8601.parse_interval('P1Y/2001-02-28',
builder=RelativeTimeBuilder)
- (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28))
-
- Fractional years and months do not make sense for relative intervals.
A :code:`RelativeValueError` is raised when attempting to parse an interval
with :code:`relative=True` and a fractional month or year::
-
- >>> aniso8601.parse_interval('P1.1Y/2001-02-28',
builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 98, in _parse_interval
- return builder.build_interval(end=enddate, duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 30, in build_duration
- raise RelativeValueError('Fractional months and years are not '
- relativetimebuilder.RelativeValueError: Fractional months and years
are not defined for relative durations.
-
- If python-dateutil is not available, a :code:`RuntimeError` is raised::
-
- >>> aniso8601.parse_interval('2003-01-27/P1M',
builder=RelativeTimeBuilder)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "aniso8601/interval.py", line 40, in parse_interval
- intervaldelimiter, datetimedelimiter)
- File "aniso8601/interval.py", line 117, in _parse_interval
- duration=duration)
- File "aniso8601/builders/python.py", line 311, in build_interval
- durationobject = cls._build_object(duration)
- File "aniso8601/builders/__init__.py", line 71, in _build_object
- TnS=parsetuple[6])
- File
"/home/nielsenb/Jetfuse/relativetimebuilder/relativetimebuilder/relativetimebuilder/__init__.py",
line 24, in build_duration
- raise RuntimeError('dateutil must be installed for '
- RuntimeError: dateutil must be installed for relativedelta support.
-
Development
===========
@@ -591,10 +376,6 @@
It is recommended to develop using a `virtualenv
<https://virtualenv.pypa.io/en/stable/>`_.
- The tests require the :code:`relative` feature to be enabled, install
the necessary dependencies using pip::
-
- $ pip install .[relative]
-
Tests
-----
@@ -634,4 +415,3 @@
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Provides-Extra: relative
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/aniso8601-5.1.0/aniso8601.egg-info/SOURCES.txt
new/aniso8601-6.0.0/aniso8601.egg-info/SOURCES.txt
--- old/aniso8601-5.1.0/aniso8601.egg-info/SOURCES.txt 2019-03-02
02:09:36.000000000 +0100
+++ new/aniso8601-6.0.0/aniso8601.egg-info/SOURCES.txt 2019-03-08
21:10:19.000000000 +0100
@@ -16,15 +16,12 @@
aniso8601.egg-info/PKG-INFO
aniso8601.egg-info/SOURCES.txt
aniso8601.egg-info/dependency_links.txt
-aniso8601.egg-info/requires.txt
aniso8601.egg-info/top_level.txt
aniso8601/builders/__init__.py
aniso8601/builders/python.py
-aniso8601/builders/relative.py
aniso8601/builders/tests/__init__.py
aniso8601/builders/tests/test_init.py
aniso8601/builders/tests/test_python.py
-aniso8601/builders/tests/test_relative.py
aniso8601/tests/__init__.py
aniso8601/tests/compat.py
aniso8601/tests/test_date.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/aniso8601-5.1.0/aniso8601.egg-info/requires.txt
new/aniso8601-6.0.0/aniso8601.egg-info/requires.txt
--- old/aniso8601-5.1.0/aniso8601.egg-info/requires.txt 2019-03-02
02:09:36.000000000 +0100
+++ new/aniso8601-6.0.0/aniso8601.egg-info/requires.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-relativetimebuilder>=0.2.0
-
-[relative]
-python-dateutil>=2.7.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/aniso8601-5.1.0/setup.py new/aniso8601-6.0.0/setup.py
--- old/aniso8601-5.1.0/setup.py 2019-03-02 02:08:27.000000000 +0100
+++ new/aniso8601-6.0.0/setup.py 2019-03-08 21:07:44.000000000 +0100
@@ -16,16 +16,12 @@
setup(
name='aniso8601',
- version='5.1.0',
+ version='6.0.0',
description='A library for parsing ISO 8601 strings.',
long_description=README_TEXT,
author='Brandon Nielsen',
author_email='[email protected]',
url='https://bitbucket.org/nielsenb/aniso8601',
- install_requires=['relativetimebuilder>=0.2.0'],
- extras_require={
- 'relative': ['python-dateutil>=2.7.3']
- },
packages=find_packages(),
test_suite='aniso8601',
tests_require=TESTS_REQUIRE,