Durations with components in wrong order are parsed successfully

Issue #8 resolved
Matti Niemenmaa created an issue

The duration parser doesn't seem to care about the order in which the durations are given:

>>> aniso8601.parse_duration('P1D1Y1M')
datetime.timedelta(396)

>>> aniso8601.parse_duration('PT1S1H')
datetime.timedelta(0, 3601)

I would expect exceptions to be raised instead.

This is with aniso8601 1.1.0.

Comments (1)

  1. Brandon Nielsen repo owner

    Fixed in 1.2.0.

    >>> aniso8601.parse_duration('P1D1Y1M')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/nielsenb/Jetfuse/aniso8601_test/lib/python2.7/site-packages/aniso8601/duration.py", line 29, in parse_duration
        return _parse_duration_prescribed(isodurationstr, relative)
      File "/home/nielsenb/Jetfuse/aniso8601_test/lib/python2.7/site-packages/aniso8601/duration.py", line 69, in _parse_duration_prescribed
        raise ValueError('ISO 8601 duration components must be in the correct order.')
    ValueError: ISO 8601 duration components must be in the correct order.
    
    >>> aniso8601.parse_duration('PT1S1H')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/nielsenb/Jetfuse/aniso8601_test/lib/python2.7/site-packages/aniso8601/duration.py", line 29, in parse_duration
        return _parse_duration_prescribed(isodurationstr, relative)
      File "/home/nielsenb/Jetfuse/aniso8601_test/lib/python2.7/site-packages/aniso8601/duration.py", line 112, in _parse_duration_prescribed
        raise ValueError('ISO 8601 time components in duration must be in the correct order.')
    ValueError: ISO 8601 time components in duration must be in the correct order.
    
  2. Log in to comment