Skip to content

CI: Test failing on master #33077

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
TomAugspurger opened this issue Mar 27, 2020 · 2 comments · Fixed by #33080
Closed

CI: Test failing on master #33077

TomAugspurger opened this issue Mar 27, 2020 · 2 comments · Fixed by #33080
Labels
CI Continuous Integration
Milestone

Comments

@TomAugspurger
Copy link
Contributor

An s3 / pyarrow test is failing on master. Does anyone have time to debug it?
https://dev.azure.com/pandas-dev/pandas/_build/results?buildId=31733&view=logs&j=a3a13ea8-7cf0-5bdb-71bb-6ac8830ae35c&t=add65f64-6c25-5783-8fd6-d9aa1b63d9d4&l=115.

There was an s3fs release earlier today, if that's related.

2020-03-27T18:16:37.6354466Z =================================== FAILURES ===================================
2020-03-27T18:16:37.6354971Z _____________________ TestParquetPyArrow.test_s3_roundtrip _____________________
2020-03-27T18:16:37.6356687Z [gw1] linux -- Python 3.7.6 /home/vsts/miniconda3/envs/pandas-dev/bin/python
2020-03-27T18:16:37.6357366Z 
2020-03-27T18:16:37.6358186Z value = '五, 27 3月 2020 18:11:53 GMT', tzinfo = <class 'dateutil.tz.tz.tzlocal'>
2020-03-27T18:16:37.6358700Z 
2020-03-27T18:16:37.6359050Z     def _parse_timestamp_with_tzinfo(value, tzinfo):
2020-03-27T18:16:37.6359491Z         """Parse timestamp with pluggable tzinfo options."""
2020-03-27T18:16:37.6359936Z         if isinstance(value, (int, float)):
2020-03-27T18:16:37.6360574Z             # Possibly an epoch time.
2020-03-27T18:16:37.6361048Z             return datetime.datetime.fromtimestamp(value, tzinfo())
2020-03-27T18:16:37.6361681Z         else:
2020-03-27T18:16:37.6362073Z             try:
2020-03-27T18:16:37.6362431Z                 return datetime.datetime.fromtimestamp(float(value), tzinfo())
2020-03-27T18:16:37.6362828Z             except (TypeError, ValueError):
2020-03-27T18:16:37.6363153Z                 pass
2020-03-27T18:16:37.6363414Z         try:
2020-03-27T18:16:37.6363776Z             # In certain cases, a timestamp marked with GMT can be parsed into a
2020-03-27T18:16:37.6364222Z             # different time zone, so here we provide a context which will
2020-03-27T18:16:37.6364618Z             # enforce that GMT == UTC.
2020-03-27T18:16:37.6365341Z >           return dateutil.parser.parse(value, tzinfos={'GMT': tzutc()})
2020-03-27T18:16:37.6365750Z 
2020-03-27T18:16:37.6366507Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/utils.py:607: 
2020-03-27T18:16:37.6367110Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2020-03-27T18:16:37.6367487Z 
2020-03-27T18:16:37.6368063Z timestr = '五, 27 3月 2020 18:11:53 GMT', parserinfo = None
2020-03-27T18:16:37.6368765Z kwargs = {'tzinfos': {'GMT': tzutc()}}
2020-03-27T18:16:37.6369118Z 
2020-03-27T18:16:37.6369430Z     def parse(timestr, parserinfo=None, **kwargs):
2020-03-27T18:16:37.6369874Z         """
2020-03-27T18:16:37.6370113Z     
2020-03-27T18:16:37.6370427Z         Parse a string in one of the supported formats, using the
2020-03-27T18:16:37.6370810Z         ``parserinfo`` parameters.
2020-03-27T18:16:37.6371081Z     
2020-03-27T18:16:37.6371354Z         :param timestr:
2020-03-27T18:16:37.6371687Z             A string containing a date/time stamp.
2020-03-27T18:16:37.6371991Z     
2020-03-27T18:16:37.6372246Z         :param parserinfo:
2020-03-27T18:16:37.6372622Z             A :class:`parserinfo` object containing parameters for the parser.
2020-03-27T18:16:37.6373134Z             If ``None``, the default arguments to the :class:`parserinfo`
2020-03-27T18:16:37.6373533Z             constructor are used.
2020-03-27T18:16:37.6373811Z     
2020-03-27T18:16:37.6374133Z         The ``**kwargs`` parameter takes the following keyword arguments:
2020-03-27T18:16:37.6374471Z     
2020-03-27T18:16:37.6374723Z         :param default:
2020-03-27T18:16:37.6375085Z             The default datetime object, if this is a datetime object and not
2020-03-27T18:16:37.6375578Z             ``None``, elements specified in ``timestr`` replace elements in the
2020-03-27T18:16:37.6375955Z             default object.
2020-03-27T18:16:37.6376228Z     
2020-03-27T18:16:37.6376479Z         :param ignoretz:
2020-03-27T18:16:37.6376863Z             If set ``True``, time zones in parsed strings are ignored and a naive
2020-03-27T18:16:37.6377278Z             :class:`datetime` object is returned.
2020-03-27T18:16:37.6377589Z     
2020-03-27T18:16:37.6378571Z         :param tzinfos:
2020-03-27T18:16:37.6379161Z             Additional time zone names / aliases which may be present in the
2020-03-27T18:16:37.6379643Z             string. This argument maps time zone names (and optionally offsets
2020-03-27T18:16:37.6380091Z             from those time zones) to time zones. This parameter can be a
2020-03-27T18:16:37.6380546Z             dictionary with timezone aliases mapping time zone names to time
2020-03-27T18:16:37.6380981Z             zones or a function taking two parameters (``tzname`` and
2020-03-27T18:16:37.6381394Z             ``tzoffset``) and returning a time zone.
2020-03-27T18:16:37.6381699Z     
2020-03-27T18:16:37.6382025Z             The timezones to which the names are mapped can be an integer
2020-03-27T18:16:37.6382494Z             offset from UTC in seconds or a :class:`tzinfo` object.
2020-03-27T18:16:37.6382838Z     
2020-03-27T18:16:37.6383237Z             .. doctest::
2020-03-27T18:16:37.6383606Z                :options: +NORMALIZE_WHITESPACE
2020-03-27T18:16:37.6384047Z     
2020-03-27T18:16:37.6384378Z                 >>> from dateutil.parser import parse
2020-03-27T18:16:37.6384771Z                 >>> from dateutil.tz import gettz
2020-03-27T18:16:37.6385594Z                 >>> tzinfos = {"BRST": -7200, "CST": gettz("America/Chicago")}
2020-03-27T18:16:37.6386479Z                 >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos)
2020-03-27T18:16:37.6387401Z                 datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -7200))
2020-03-27T18:16:37.6388159Z                 >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos)
2020-03-27T18:16:37.6388663Z                 datetime.datetime(2012, 1, 19, 17, 21,
2020-03-27T18:16:37.6389349Z                                   tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago'))
2020-03-27T18:16:37.6390349Z     
2020-03-27T18:16:37.6390823Z             This parameter is ignored if ``ignoretz`` is set.
2020-03-27T18:16:37.6391283Z     
2020-03-27T18:16:37.6391595Z         :param dayfirst:
2020-03-27T18:16:37.6392353Z             Whether to interpret the first value in an ambiguous 3-integer date
2020-03-27T18:16:37.6393105Z             (e.g. 01/05/09) as the day (``True``) or month (``False``). If
2020-03-27T18:16:37.6393685Z             ``yearfirst`` is set to ``True``, this distinguishes between YDM and
2020-03-27T18:16:37.6394156Z             YMD. If set to ``None``, this value is retrieved from the current
2020-03-27T18:16:37.6394610Z             :class:`parserinfo` object (which itself defaults to ``False``).
2020-03-27T18:16:37.6394968Z     
2020-03-27T18:16:37.6395226Z         :param yearfirst:
2020-03-27T18:16:37.6395841Z             Whether to interpret the first value in an ambiguous 3-integer date
2020-03-27T18:16:37.6396511Z             (e.g. 01/05/09) as the year. If ``True``, the first number is taken to
2020-03-27T18:16:37.6397349Z             be the year, otherwise the last number is taken to be the year. If
2020-03-27T18:16:37.6398069Z             this is set to ``None``, the value is retrieved from the current
2020-03-27T18:16:37.6398617Z             :class:`parserinfo` object (which itself defaults to ``False``).
2020-03-27T18:16:37.6399037Z     
2020-03-27T18:16:37.6399333Z         :param fuzzy:
2020-03-27T18:16:37.6399809Z             Whether to allow fuzzy parsing, allowing for string like "Today is
2020-03-27T18:16:37.6400291Z             January 1, 2047 at 8:21:00AM".
2020-03-27T18:16:37.6400628Z     
2020-03-27T18:16:37.6400954Z         :param fuzzy_with_tokens:
2020-03-27T18:16:37.6401391Z             If ``True``, ``fuzzy`` is automatically set to True, and the parser
2020-03-27T18:16:37.6401903Z             will return a tuple where the first element is the parsed
2020-03-27T18:16:37.6402536Z             :class:`datetime.datetime` datetimestamp and the second element is
2020-03-27T18:16:37.6403633Z             a tuple containing the portions of the string which were ignored:
2020-03-27T18:16:37.6404036Z     
2020-03-27T18:16:37.6404341Z             .. doctest::
2020-03-27T18:16:37.6404638Z     
2020-03-27T18:16:37.6405107Z                 >>> from dateutil.parser import parse
2020-03-27T18:16:37.6405634Z                 >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True)
2020-03-27T18:16:37.6406513Z                 (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at '))
2020-03-27T18:16:37.6407199Z     
2020-03-27T18:16:37.6407464Z         :return:
2020-03-27T18:16:37.6407834Z             Returns a :class:`datetime.datetime` object or, if the
2020-03-27T18:16:37.6408278Z             ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the
2020-03-27T18:16:37.6408981Z             first element being a :class:`datetime.datetime` object, the second
2020-03-27T18:16:37.6409472Z             a tuple containing the fuzzy tokens.
2020-03-27T18:16:37.6409793Z     
2020-03-27T18:16:37.6416049Z         :raises ValueError:
2020-03-27T18:16:37.6416719Z             Raised for invalid or unknown string format, if the provided
2020-03-27T18:16:37.6417444Z             :class:`tzinfo` is not in a valid format, or if an invalid date
2020-03-27T18:16:37.6417891Z             would be created.
2020-03-27T18:16:37.6418311Z     
2020-03-27T18:16:37.6418726Z         :raises OverflowError:
2020-03-27T18:16:37.6419273Z             Raised if the parsed date exceeds the largest valid C integer on
2020-03-27T18:16:37.6419711Z             your system.
2020-03-27T18:16:37.6420018Z         """
2020-03-27T18:16:37.6420330Z         if parserinfo:
2020-03-27T18:16:37.6420877Z             return parser(parserinfo).parse(timestr, **kwargs)
2020-03-27T18:16:37.6421255Z         else:
2020-03-27T18:16:37.6421644Z >           return DEFAULTPARSER.parse(timestr, **kwargs)
2020-03-27T18:16:37.6422091Z 
2020-03-27T18:16:37.6423228Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/dateutil/parser/_parser.py:1374: 
2020-03-27T18:16:37.6423959Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2020-03-27T18:16:37.6424342Z 
2020-03-27T18:16:37.6424658Z self = <dateutil.parser._parser.parser object at 0x7f1de46b9350>
2020-03-27T18:16:37.6425310Z timestr = '五, 27 3月 2020 18:11:53 GMT'
2020-03-27T18:16:37.6425800Z default = datetime.datetime(2020, 3, 27, 0, 0), ignoretz = False
2020-03-27T18:16:37.6426475Z tzinfos = {'GMT': tzutc()}, kwargs = {}, res = None, skipped_tokens = None
2020-03-27T18:16:37.6426876Z 
2020-03-27T18:16:37.6427164Z     def parse(self, timestr, default=None,
2020-03-27T18:16:37.6427538Z               ignoretz=False, tzinfos=None, **kwargs):
2020-03-27T18:16:37.6427849Z         """
2020-03-27T18:16:37.6428204Z         Parse the date/time string into a :class:`datetime.datetime` object.
2020-03-27T18:16:37.6428565Z     
2020-03-27T18:16:37.6428819Z         :param timestr:
2020-03-27T18:16:37.6429210Z             Any date/time string using the supported formats.
2020-03-27T18:16:37.6429526Z     
2020-03-27T18:16:37.6429779Z         :param default:
2020-03-27T18:16:37.6430167Z             The default datetime object, if this is a datetime object and not
2020-03-27T18:16:37.6430776Z             ``None``, elements specified in ``timestr`` replace elements in the
2020-03-27T18:16:37.6431441Z             default object.
2020-03-27T18:16:37.6431742Z     
2020-03-27T18:16:37.6432049Z         :param ignoretz:
2020-03-27T18:16:37.6432467Z             If set ``True``, time zones in parsed strings are ignored and a
2020-03-27T18:16:37.6432975Z             naive :class:`datetime.datetime` object is returned.
2020-03-27T18:16:37.6433343Z     
2020-03-27T18:16:37.6433628Z         :param tzinfos:
2020-03-27T18:16:37.6434055Z             Additional time zone names / aliases which may be present in the
2020-03-27T18:16:37.6434682Z             string. This argument maps time zone names (and optionally offsets
2020-03-27T18:16:37.6435260Z             from those time zones) to time zones. This parameter can be a
2020-03-27T18:16:37.6435702Z             dictionary with timezone aliases mapping time zone names to time
2020-03-27T18:16:37.6436155Z             zones or a function taking two parameters (``tzname`` and
2020-03-27T18:16:37.6436696Z             ``tzoffset``) and returning a time zone.
2020-03-27T18:16:37.6437208Z     
2020-03-27T18:16:37.6437620Z             The timezones to which the names are mapped can be an integer
2020-03-27T18:16:37.6438077Z             offset from UTC in seconds or a :class:`tzinfo` object.
2020-03-27T18:16:37.6438437Z     
2020-03-27T18:16:37.6438699Z             .. doctest::
2020-03-27T18:16:37.6439054Z                :options: +NORMALIZE_WHITESPACE
2020-03-27T18:16:37.6439354Z     
2020-03-27T18:16:37.6439678Z                 >>> from dateutil.parser import parse
2020-03-27T18:16:37.6440070Z                 >>> from dateutil.tz import gettz
2020-03-27T18:16:37.6440793Z                 >>> tzinfos = {"BRST": -7200, "CST": gettz("America/Chicago")}
2020-03-27T18:16:37.6441604Z                 >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos)
2020-03-27T18:16:37.6442377Z                 datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -7200))
2020-03-27T18:16:37.6443465Z                 >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos)
2020-03-27T18:16:37.6443989Z                 datetime.datetime(2012, 1, 19, 17, 21,
2020-03-27T18:16:37.6444715Z                                   tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago'))
2020-03-27T18:16:37.6445160Z     
2020-03-27T18:16:37.6445519Z             This parameter is ignored if ``ignoretz`` is set.
2020-03-27T18:16:37.6445856Z     
2020-03-27T18:16:37.6446238Z         :param \\*\\*kwargs:
2020-03-27T18:16:37.6447528Z             Keyword arguments as passed to ``_parse()``.
2020-03-27T18:16:37.6448032Z     
2020-03-27T18:16:37.6448353Z         :return:
2020-03-27T18:16:37.6448768Z             Returns a :class:`datetime.datetime` object or, if the
2020-03-27T18:16:37.6449286Z             ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the
2020-03-27T18:16:37.6449817Z             first element being a :class:`datetime.datetime` object, the second
2020-03-27T18:16:37.6450310Z             a tuple containing the fuzzy tokens.
2020-03-27T18:16:37.6450667Z     
2020-03-27T18:16:37.6450965Z         :raises ParserError:
2020-03-27T18:16:37.6451396Z             Raised for invalid or unknown string format, if the provided
2020-03-27T18:16:37.6451904Z             :class:`tzinfo` is not in a valid format, or if an invalid date
2020-03-27T18:16:37.6452350Z             would be created.
2020-03-27T18:16:37.6452800Z     
2020-03-27T18:16:37.6453091Z         :raises TypeError:
2020-03-27T18:16:37.6453885Z             Raised for non-string or character stream input.
2020-03-27T18:16:37.6454326Z     
2020-03-27T18:16:37.6454656Z         :raises OverflowError:
2020-03-27T18:16:37.6455085Z             Raised if the parsed date exceeds the largest valid C integer on
2020-03-27T18:16:37.6455507Z             your system.
2020-03-27T18:16:37.6455922Z         """
2020-03-27T18:16:37.6456431Z     
2020-03-27T18:16:37.6456744Z         if default is None:
2020-03-27T18:16:37.6457160Z             default = datetime.datetime.now().replace(hour=0, minute=0,
2020-03-27T18:16:37.6457686Z                                                       second=0, microsecond=0)
2020-03-27T18:16:37.6458066Z     
2020-03-27T18:16:37.6458428Z         res, skipped_tokens = self._parse(timestr, **kwargs)
2020-03-27T18:16:37.6458778Z     
2020-03-27T18:16:37.6459191Z         if res is None:
2020-03-27T18:16:37.6459743Z >           raise ParserError("Unknown string format: %s", timestr)
2020-03-27T18:16:37.6460612Z E           dateutil.parser._parser.ParserError: Unknown string format: 五, 27 3月 2020 18:11:53 GMT
2020-03-27T18:16:37.6461135Z 
2020-03-27T18:16:37.6461831Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/dateutil/parser/_parser.py:649: ParserError
2020-03-27T18:16:37.6462294Z 
2020-03-27T18:16:37.6462654Z During handling of the above exception, another exception occurred:
2020-03-27T18:16:37.6463101Z 
2020-03-27T18:16:37.6463488Z self = <pandas.tests.io.test_parquet.TestParquetPyArrow object at 0x7f1d76d75210>
2020-03-27T18:16:37.6464218Z df_compat =    A    B
2020-03-27T18:16:37.6464554Z 0  1  foo
2020-03-27T18:16:37.6464841Z 1  2  foo
2020-03-27T18:16:37.6465108Z 2  3  foo
2020-03-27T18:16:37.6465977Z s3_resource = s3.ServiceResource(), pa = 'pyarrow'
2020-03-27T18:16:37.6466419Z 
2020-03-27T18:16:37.6466772Z     def test_s3_roundtrip(self, df_compat, s3_resource, pa):
2020-03-27T18:16:37.6467176Z         # GH #19134
2020-03-27T18:16:37.6467888Z >       check_round_trip(df_compat, pa, path="s3://pandas-test/pyarrow.parquet")
2020-03-27T18:16:37.6468598Z 
2020-03-27T18:16:37.6468923Z pandas/tests/io/test_parquet.py:488: 
2020-03-27T18:16:37.6469382Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2020-03-27T18:16:37.6469883Z pandas/tests/io/test_parquet.py:176: in check_round_trip
2020-03-27T18:16:37.6470262Z     compare(repeat)
2020-03-27T18:16:37.6470636Z pandas/tests/io/test_parquet.py:168: in compare
2020-03-27T18:16:37.6471190Z     actual = read_parquet(path, **read_kwargs)
2020-03-27T18:16:37.6471616Z pandas/io/parquet.py:300: in read_parquet
2020-03-27T18:16:37.6472030Z     return impl.read(path, columns=columns, **kwargs)
2020-03-27T18:16:37.6472668Z pandas/io/parquet.py:113: in read
2020-03-27T18:16:37.6473217Z     path, _, _, should_close = get_filepath_or_buffer(path)
2020-03-27T18:16:37.6473645Z pandas/io/common.py:201: in get_filepath_or_buffer
2020-03-27T18:16:37.6474112Z     filepath_or_buffer, encoding=encoding, compression=compression, mode=mode
2020-03-27T18:16:37.6474560Z pandas/io/s3.py:48: in get_filepath_or_buffer
2020-03-27T18:16:37.6475000Z     file, _fs = get_file_and_filesystem(filepath_or_buffer, mode=mode)
2020-03-27T18:16:37.6475436Z pandas/io/s3.py:29: in get_file_and_filesystem
2020-03-27T18:16:37.6475860Z     file = fs.open(_strip_schema(filepath_or_buffer), mode)
2020-03-27T18:16:37.6476799Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/fsspec/spec.py:774: in open
2020-03-27T18:16:37.6477280Z     **kwargs
2020-03-27T18:16:37.6478236Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/s3fs/core.py:377: in _open
2020-03-27T18:16:37.6478798Z     autocommit=autocommit, requester_pays=requester_pays)
2020-03-27T18:16:37.6479601Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/s3fs/core.py:1095: in __init__
2020-03-27T18:16:37.6480120Z     cache_type=cache_type)
2020-03-27T18:16:37.6480867Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/fsspec/spec.py:1056: in __init__
2020-03-27T18:16:37.6481404Z     self.details = fs.info(path)
2020-03-27T18:16:37.6482347Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/s3fs/core.py:528: in info
2020-03-27T18:16:37.6483012Z     Key=key, **version_id_kw(version_id), **self.req_kw)
2020-03-27T18:16:37.6484814Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/s3fs/core.py:199: in _call_s3
2020-03-27T18:16:37.6485427Z     return method(**additional_kwargs)
2020-03-27T18:16:37.6486423Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/client.py:316: in _api_call
2020-03-27T18:16:37.6487194Z     return self._make_api_call(operation_name, kwargs)
2020-03-27T18:16:37.6488049Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/client.py:613: in _make_api_call
2020-03-27T18:16:37.6488645Z     operation_model, request_dict, request_context)
2020-03-27T18:16:37.6489404Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/client.py:632: in _make_request
2020-03-27T18:16:37.6489999Z     return self._endpoint.make_request(operation_model, request_dict)
2020-03-27T18:16:37.6491059Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/endpoint.py:102: in make_request
2020-03-27T18:16:37.6491692Z     return self._send_request(request_dict, operation_model)
2020-03-27T18:16:37.6492529Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/endpoint.py:135: in _send_request
2020-03-27T18:16:37.6493171Z     request, operation_model, context)
2020-03-27T18:16:37.6494139Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/endpoint.py:167: in _get_response
2020-03-27T18:16:37.6494730Z     request, operation_model)
2020-03-27T18:16:37.6495541Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/endpoint.py:218: in _do_get_response
2020-03-27T18:16:37.6496167Z     response_dict, operation_model.output_shape)
2020-03-27T18:16:37.6497203Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/parsers.py:242: in parse
2020-03-27T18:16:37.6497800Z     parsed = self._do_parse(response, shape)
2020-03-27T18:16:37.6498590Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/parsers.py:774: in _do_parse
2020-03-27T18:16:37.6499160Z     member_shapes, final_parsed)
2020-03-27T18:16:37.6499969Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/parsers.py:833: in _parse_non_payload_attrs
2020-03-27T18:16:37.6500723Z     member_shape, headers[header_name])
2020-03-27T18:16:37.6501547Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/parsers.py:302: in _parse_shape
2020-03-27T18:16:37.6502128Z     return handler(shape, node)
2020-03-27T18:16:37.6502916Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/parsers.py:175: in _get_text_content
2020-03-27T18:16:37.6503488Z     return func(self, shape, text)
2020-03-27T18:16:37.6504298Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/parsers.py:462: in _handle_timestamp
2020-03-27T18:16:37.6504870Z     return self._timestamp_parser(text)
2020-03-27T18:16:37.6505668Z ../../../miniconda3/envs/pandas-dev/lib/python3.7/site-packages/botocore/utils.py:626: in parse_timestamp
2020-03-27T18:16:37.6506266Z     return _parse_timestamp_with_tzinfo(value, tzinfo)
2020-03-27T18:16:37.6506771Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2020-03-27T18:16:37.6507148Z 
2020-03-27T18:16:37.6507825Z value = '五, 27 3月 2020 18:11:53 GMT', tzinfo = <class 'dateutil.tz.tz.tzlocal'>
2020-03-27T18:16:37.6508344Z 
2020-03-27T18:16:37.6508684Z     def _parse_timestamp_with_tzinfo(value, tzinfo):
2020-03-27T18:16:37.6509139Z         """Parse timestamp with pluggable tzinfo options."""
2020-03-27T18:16:37.6509563Z         if isinstance(value, (int, float)):
2020-03-27T18:16:37.6509962Z             # Possibly an epoch time.
2020-03-27T18:16:37.6510383Z             return datetime.datetime.fromtimestamp(value, tzinfo())
2020-03-27T18:16:37.6510764Z         else:
2020-03-27T18:16:37.6511070Z             try:
2020-03-27T18:16:37.6511478Z                 return datetime.datetime.fromtimestamp(float(value), tzinfo())
2020-03-27T18:16:37.6511946Z             except (TypeError, ValueError):
2020-03-27T18:16:37.6512297Z                 pass
2020-03-27T18:16:37.6512606Z         try:
2020-03-27T18:16:37.6513006Z             # In certain cases, a timestamp marked with GMT can be parsed into a
2020-03-27T18:16:37.6513528Z             # different time zone, so here we provide a context which will
2020-03-27T18:16:37.6513992Z             # enforce that GMT == UTC.
2020-03-27T18:16:37.6514846Z             return dateutil.parser.parse(value, tzinfos={'GMT': tzutc()})
2020-03-27T18:16:37.6515508Z         except (TypeError, ValueError) as e:
2020-03-27T18:16:37.6516237Z >           raise ValueError('Invalid timestamp "%s": %s' % (value, e))
2020-03-27T18:16:37.6517538Z E           ValueError: Invalid timestamp "五, 27 3月 2020 18:11:53 GMT": Unknown string format: 五, 27 3月 2020 18:11:53 GMT
@TomAugspurger TomAugspurger added the CI Continuous Integration label Mar 27, 2020
@jbrockmendel
Copy link
Member

Opened a PR to see if pinning at the previous s3fs fixes it

@jbrockmendel
Copy link
Member

Would s3fs or fastparquet (or anything else in the stack for that test) write something like Timestamp.now().strftime(...) to the file that we then read in order to round-trip?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI Continuous Integration
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants