Subject: python-arrow timezone test failure
From: Guillaume Le Vaillant <[email-masked]>
To: [email-masked]
Date: Thu, 04 Feb 2021 13:47:59 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

The python-arrow package currently fails to build because the
"test_parse_tz_name_zzz" test is failing.
This is with Guix at eae865c134ebb8b7432572288e8721794d6a9b87.
I'm not very familiar with Python, so does someone know how to fix this?

Here's the relevant part of the build log:

--8<---------------cut here---------------start------------->8---
_________ TestDateTimeParserParse.test_parse_tz_name_zzz[America/Nuuk] _________

self = <tests.test_parser.TestDateTimeParserParse object at 0x7ffff3e0d220>
full_tz_name = 'America/Nuuk'

    @pytest.mark.parametrize("full_tz_name", make_full_tz_list())
    def test_parse_tz_name_zzz(self, full_tz_name):
    
        self.expected = datetime(2013, 1, 1, tzinfo=tz.gettz(full_tz_name))
>       assert (
            self.parser.parse("2013-01-01 {}".format(full_tz_name), "YYYY-MM-DD ZZZ")
            == self.expected
        )

tests/test_parser.py:347: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
arrow/parser.py:244: in parse
    self._parse_token(token, value, parts)
arrow/parser.py:397: in _parse_token
    parts["tzinfo"] = TzinfoParser.parse(value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'arrow.parser.TzinfoParser'>, tzinfo_string = 'America/Nuuk'

    @classmethod
    def parse(cls, tzinfo_string):
    
        tzinfo = None
    
        if tzinfo_string == "local":
            tzinfo = tz.tzlocal()
    
        elif tzinfo_string in ["utc", "UTC", "Z"]:
            tzinfo = tz.tzutc()
    
        else:
    
            iso_match = cls._TZINFO_RE.match(tzinfo_string)
    
            if iso_match:
                sign, hours, minutes = iso_match.groups()
                if minutes is None:
                    minutes = 0
                seconds = int(hours) * 3600 + int(minutes) * 60
    
                if sign == "-":
                    seconds *= -1
    
                tzinfo = tz.tzoffset(None, seconds)
    
            else:
                tzinfo = tz.gettz(tzinfo_string)
    
        if tzinfo is None:
>           raise ParserError(
                'Could not parse timezone expression "{}"'.format(tzinfo_string)
            )
E           arrow.parser.ParserError: Could not parse timezone expression "America/Nuuk"

arrow/parser.py:592: ParserError
--8<---------------cut here---------------end--------------->8---