def test_rfc_3339_extended(): text = "2016-10-06T12:34:56.123456+05:30" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 6 == parsed.day assert 12 == parsed.hour assert 34 == parsed.minute assert 56 == parsed.second assert 123456 == parsed.microsecond assert 19800 == parsed.utcoffset().total_seconds() text = "2016-10-06T12:34:56.000123+05:30" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 6 == parsed.day assert 12 == parsed.hour assert 34 == parsed.minute assert 56 == parsed.second assert 123 == parsed.microsecond assert 19800 == parsed.utcoffset().total_seconds()
def test_ymd_hms(): text = "2016-10-06 12:34:56" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 6 == parsed.day assert 12 == parsed.hour assert 34 == parsed.minute assert 56 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2016-10-06 12:34:56.123456" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 6 == parsed.day assert 12 == parsed.hour assert 34 == parsed.minute assert 56 == parsed.second assert 123456 == parsed.microsecond assert parsed.tzinfo is None
def test_iso8601_ordinal(): text = "2012-007" parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 7 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012007" parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 7 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_ymd_hms(): text = '2016-10-06 12:34:56' parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 6 == parsed.day assert 12 == parsed.hour assert 34 == parsed.minute assert 56 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = '2016-10-06 12:34:56.123456' parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 6 == parsed.day assert 12 == parsed.hour assert 34 == parsed.minute assert 56 == parsed.second assert 123456 == parsed.microsecond assert parsed.tzinfo is None
def test_iso_8601_date(): text = "2012" parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 1 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012-05-03" parsed = parse(text) assert 2012 == parsed.year assert 5 == parsed.month assert 3 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "20120503" parsed = parse(text) assert 2012 == parsed.year assert 5 == parsed.month assert 3 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012-05" parsed = parse(text) assert 2012 == parsed.year assert 5 == parsed.month assert 1 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_iso8601_week_number_with_time(): text = "2012-W05T09" parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 30 == parsed.day assert 9 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012W05T09" parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 30 == parsed.day assert 9 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012-W05-5T09" parsed = parse(text) assert 2012 == parsed.year assert 2 == parsed.month assert 3 == parsed.day assert 9 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012W055T09" parsed = parse(text) assert 2012 == parsed.year assert 2 == parsed.month assert 3 == parsed.day assert 9 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_strict(): text = "4 Aug 2015 - 11:20 PM" with pytest.raises(ParserError): parse(text) parsed = parse(text, strict=False) assert 2015 == parsed.year assert 8 == parsed.month assert 4 == parsed.day assert 23 == parsed.hour assert 20 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_edge_cases(): text = "2013-11-1" parsed = parse(text, strict=False) assert 2013 == parsed.year assert 11 == parsed.month assert 1 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "10-01-01" parsed = parse(text, strict=False) assert 2010 == parsed.year assert 1 == parsed.month assert 1 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "31-01-01" parsed = parse(text, strict=False) assert 2031 == parsed.year assert 1 == parsed.month assert 1 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "32-01-01" parsed = parse(text, strict=False) assert 2032 == parsed.year assert 1 == parsed.month assert 1 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_exif_edge_case(): text = "2016:12:26 15:45:28" parsed = parse(text) assert 2016 == parsed.year assert 12 == parsed.month assert 26 == parsed.day assert 15 == parsed.hour assert 45 == parsed.minute assert 28 == parsed.second
def test_iso8601_time(): now = pendulum.datetime(2015, 11, 12) text = "201205" parsed = parse(text, now=now) assert 2015 == parsed.year assert 11 == parsed.month assert 12 == parsed.day assert 20 == parsed.hour assert 12 == parsed.minute assert 5 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "20:12:05" parsed = parse(text, now=now) assert 2015 == parsed.year assert 11 == parsed.month assert 12 == parsed.day assert 20 == parsed.hour assert 12 == parsed.minute assert 5 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "20:12:05.123456" parsed = parse(text, now=now) assert 2015 == parsed.year assert 11 == parsed.month assert 12 == parsed.day assert 20 == parsed.hour assert 12 == parsed.minute assert 5 == parsed.second assert 123456 == parsed.microsecond assert parsed.tzinfo is None
def test_y(): text = "2016" parsed = parse(text) assert 2016 == parsed.year assert 1 == parsed.month assert 1 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_ymd(): text = '2016-10-06' parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 6 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_rfc_3339(): text = '2016-10-06T12:34:56+05:30' parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 6 == parsed.day assert 12 == parsed.hour assert 34 == parsed.minute assert 56 == parsed.second assert 0 == parsed.microsecond assert 19800 == parsed.utcoffset().total_seconds()
def test_ymd_one_character(): text = "2016-2-6" parsed = parse(text, strict=False) assert 2016 == parsed.year assert 2 == parsed.month assert 6 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_exact(): text = "2012" parsed = parse(text, exact=True) assert isinstance(parsed, datetime.date) assert 2012 == parsed.year assert 1 == parsed.month assert 1 == parsed.day text = "2012-03" parsed = parse(text, exact=True) assert isinstance(parsed, datetime.date) assert 2012 == parsed.year assert 3 == parsed.month assert 1 == parsed.day text = "2012-03-13" parsed = parse(text, exact=True) assert isinstance(parsed, datetime.date) assert 2012 == parsed.year assert 3 == parsed.month assert 13 == parsed.day text = "2012W055" parsed = parse(text, exact=True) assert isinstance(parsed, datetime.date) assert 2012 == parsed.year assert 2 == parsed.month assert 3 == parsed.day text = "2012007" parsed = parse(text, exact=True) assert isinstance(parsed, datetime.date) assert 2012 == parsed.year assert 1 == parsed.month assert 7 == parsed.day text = "20:12:05" parsed = parse(text, exact=True) assert isinstance(parsed, datetime.time) assert 20 == parsed.hour assert 12 == parsed.minute assert 5 == parsed.second assert 0 == parsed.microsecond
def test_invalid(): text = "201610T" with pytest.raises(ParserError): parse(text) text = "2012-W54" with pytest.raises(ParserError): parse(text) text = "2012-W13-8" with pytest.raises(ParserError): parse(text) # W53 in normal year (not long) text = "2017W53" with pytest.raises(ParserError): parse(text)
def test_invalid(): text = '201610T' with pytest.raises(ParserError): parse(text) text = '2012-W54' with pytest.raises(ParserError): parse(text) text = '2012-W13-8' with pytest.raises(ParserError): parse(text)
def test_parse_duration(): text = 'P2Y3M4DT5H6M7S' parsed = parse(text) assert parsed.years == 2 assert parsed.months == 3 assert parsed.weeks == 0 assert parsed.remaining_days == 4 assert parsed.hours == 5 assert parsed.minutes == 6 assert parsed.remaining_seconds == 7 assert parsed.microseconds == 0 text = 'P1Y2M3DT4H5M6.5S' parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 4 assert parsed.minutes == 5 assert parsed.remaining_seconds == 6 assert parsed.microseconds == 500000 text = 'P1Y2M3DT4H5M6,5S' parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 4 assert parsed.minutes == 5 assert parsed.remaining_seconds == 6 assert parsed.microseconds == 500000 text = 'P1Y2M3D' parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1Y2M3.5D' parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1Y2M3,5D' parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'PT4H54M6.5S' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 4 assert parsed.minutes == 54 assert parsed.remaining_seconds == 6 assert parsed.microseconds == 500000 text = 'PT4H54M6,5S' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 4 assert parsed.minutes == 54 assert parsed.remaining_seconds == 6 assert parsed.microseconds == 500000 text = 'P1Y' parsed = parse(text) assert parsed.years == 1 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1.5Y' with pytest.raises(ParserError): parse(text) text = 'P1,5Y' with pytest.raises(ParserError): parse(text) text = 'P1M' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 1 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1.5M' with pytest.raises(ParserError): parse(text) text = 'P1,5M' with pytest.raises(ParserError): parse(text) text = 'P1W' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 1 assert parsed.remaining_days == 0 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1.5W' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 1 assert parsed.remaining_days == 3 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1,5W' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 1 assert parsed.remaining_days == 3 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1D' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 1 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1.5D' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 1 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'P1,5D' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 1 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'PT1H' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 1 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'PT1.5H' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 1 assert parsed.minutes == 30 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = 'PT1,5H' parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 1 assert parsed.minutes == 30 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0
def test_parse_duration_no_operator(): with pytest.raises(ParserError): parse('2Y3M4DT5H6M7S')
def test_parse_duration_fraction_only_allowed_on_last_component(): with pytest.raises(ParserError): parse("P2Y3M4DT5.5H6M7S")
def test_iso8601_ordinal_invalid(): text = "2012-007-05" with pytest.raises(ParserError): parse(text)
def test_parse_duration_fraction_only_allowed_on_last_component(): with pytest.raises(ParserError): parse('P2Y3M4DT5.5H6M7S')
def test_parse_duration(): text = "P2Y3M4DT5H6M7S" parsed = parse(text) assert parsed.years == 2 assert parsed.months == 3 assert parsed.weeks == 0 assert parsed.remaining_days == 4 assert parsed.hours == 5 assert parsed.minutes == 6 assert parsed.remaining_seconds == 7 assert parsed.microseconds == 0 text = "P1Y2M3DT4H5M6.5S" parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 4 assert parsed.minutes == 5 assert parsed.remaining_seconds == 6 assert parsed.microseconds == 500000 text = "P1Y2M3DT4H5M6,5S" parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 4 assert parsed.minutes == 5 assert parsed.remaining_seconds == 6 assert parsed.microseconds == 500000 text = "P1Y2M3D" parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1Y2M3.5D" parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1Y2M3,5D" parsed = parse(text) assert parsed.years == 1 assert parsed.months == 2 assert parsed.weeks == 0 assert parsed.remaining_days == 3 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "PT4H54M6.5S" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 4 assert parsed.minutes == 54 assert parsed.remaining_seconds == 6 assert parsed.microseconds == 500000 text = "PT4H54M6,5S" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 4 assert parsed.minutes == 54 assert parsed.remaining_seconds == 6 assert parsed.microseconds == 500000 text = "P1Y" parsed = parse(text) assert parsed.years == 1 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1.5Y" with pytest.raises(ParserError): parse(text) text = "P1,5Y" with pytest.raises(ParserError): parse(text) text = "P1M" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 1 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1.5M" with pytest.raises(ParserError): parse(text) text = "P1,5M" with pytest.raises(ParserError): parse(text) text = "P1W" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 1 assert parsed.remaining_days == 0 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1.5W" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 1 assert parsed.remaining_days == 3 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1,5W" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 1 assert parsed.remaining_days == 3 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1D" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 1 assert parsed.hours == 0 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1.5D" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 1 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "P1,5D" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 1 assert parsed.hours == 12 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "PT1H" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 1 assert parsed.minutes == 0 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "PT1.5H" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 1 assert parsed.minutes == 30 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0 text = "PT1,5H" parsed = parse(text) assert parsed.years == 0 assert parsed.months == 0 assert parsed.weeks == 0 assert parsed.remaining_days == 0 assert parsed.hours == 1 assert parsed.minutes == 30 assert parsed.remaining_seconds == 0 assert parsed.microseconds == 0
def test_parse_duration_no_operator(): with pytest.raises(ParserError): parse("2Y3M4DT5H6M7S")
def test_iso8601_week_number(): text = '2012-W05' parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 30 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = '2012W05' parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 30 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = '2012-W05-5' parsed = parse(text) assert 2012 == parsed.year assert 2 == parsed.month assert 3 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = '2012W055' parsed = parse(text) assert 2012 == parsed.year assert 2 == parsed.month assert 3 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = '2009-W53-7' parsed = parse(text) assert 2010 == parsed.year assert 1 == parsed.month assert 3 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = '2009-W01-1' parsed = parse(text) assert 2008 == parsed.year assert 12 == parsed.month assert 29 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_parse_duration_invalid(): with pytest.raises(ParserError): parse("P1Dasdfasdf")
def test_parse_duration_weeks_combined(): with pytest.raises(ParserError): parse('P1Y2W')
def test_parse_duration_invalid_order(): with pytest.raises(ParserError): parse('P1S') with pytest.raises(ParserError): parse('P1D1S') with pytest.raises(ParserError): parse('1Y2M3D1SPT1M') with pytest.raises(ParserError): parse('P1Y2M3D2MT1S') with pytest.raises(ParserError): parse('P2M3D1ST1Y1M') with pytest.raises(ParserError): parse('P1Y2M2MT3D1S') with pytest.raises(ParserError): parse('P1D1Y1M') with pytest.raises(ParserError): parse('PT1S1H')
def test_parse_duration_invalid_order(): with pytest.raises(ParserError): parse("P1S") with pytest.raises(ParserError): parse("P1D1S") with pytest.raises(ParserError): parse("1Y2M3D1SPT1M") with pytest.raises(ParserError): parse("P1Y2M3D2MT1S") with pytest.raises(ParserError): parse("P2M3D1ST1Y1M") with pytest.raises(ParserError): parse("P1Y2M2MT3D1S") with pytest.raises(ParserError): parse("P1D1Y1M") with pytest.raises(ParserError): parse("PT1S1H")
def test_iso8601_datetime(): text = "2016-10-01T14" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 1 == parsed.day assert 14 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2016-10-01T14:30" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 1 == parsed.day assert 14 == parsed.hour assert 30 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "20161001T14" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 1 == parsed.day assert 14 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "20161001T1430" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 1 == parsed.day assert 14 == parsed.hour assert 30 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "20161001T1430+0530" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 1 == parsed.day assert 14 == parsed.hour assert 30 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert 19800 == parsed.utcoffset().total_seconds() text = "20161001T1430,4+0530" parsed = parse(text) assert 2016 == parsed.year assert 10 == parsed.month assert 1 == parsed.day assert 14 == parsed.hour assert 30 == parsed.minute assert 0 == parsed.second assert 400000 == parsed.microsecond assert 19800 == parsed.utcoffset().total_seconds() text = "2008-09-03T20:56:35.450686+01" parsed = parse(text) assert 2008 == parsed.year assert 9 == parsed.month assert 3 == parsed.day assert 20 == parsed.hour assert 56 == parsed.minute assert 35 == parsed.second assert 450686 == parsed.microsecond assert 3600 == parsed.utcoffset().total_seconds()
def test_parse_duration_weeks_combined(): with pytest.raises(ParserError): parse("P1Y2W")
def test_iso8601_week_number(): text = "2012-W05" parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 30 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012W05" parsed = parse(text) assert 2012 == parsed.year assert 1 == parsed.month assert 30 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None # Long Year text = "2015W53" parsed = parse(text) assert 2015 == parsed.year assert 12 == parsed.month assert 28 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012-W05-5" parsed = parse(text) assert 2012 == parsed.year assert 2 == parsed.month assert 3 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2012W055" parsed = parse(text) assert 2012 == parsed.year assert 2 == parsed.month assert 3 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2009-W53-7" parsed = parse(text) assert 2010 == parsed.year assert 1 == parsed.month assert 3 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None text = "2009-W01-1" parsed = parse(text) assert 2008 == parsed.year assert 12 == parsed.month assert 29 == parsed.day assert 0 == parsed.hour assert 0 == parsed.minute assert 0 == parsed.second assert 0 == parsed.microsecond assert parsed.tzinfo is None
def test_parse_duration_invalid(): with pytest.raises(ParserError): parse('P1Dasdfasdf')