From 1af25791d5f3992480fed8219e93abc32563e65a Mon Sep 17 00:00:00 2001 From: James McCoy Date: Sat, 6 Nov 2021 11:10:08 -0400 Subject: [PATCH] fix(msgpack#strptime): use calendar.timegm to get seconds since epoch datetime.datetime.timestamp does not exist on Windows and datetime.datetiem.strftime('%s') is not supported, since '%s' is a POSIX format. Instead, use the recommended `calendar.timegm(obj.utctimetuple())`. (cherry picked from commit fb14e2a8d6aacfb02578c2e191f26cfdf416bfde) --- runtime/autoload/msgpack.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/runtime/autoload/msgpack.vim b/runtime/autoload/msgpack.vim index 7dd225e3d9..7f98a5b230 100644 --- a/runtime/autoload/msgpack.vim +++ b/runtime/autoload/msgpack.vim @@ -56,6 +56,7 @@ function s:msgpack_init_python() abort \. " time = datetime.datetime.fromtimestamp(timestamp)\n" \. " return time.strftime(fmt)\n" \. "def shada_dict_strptime():\n" + \. " import calendar\n" \. " import datetime\n" \. " import vim\n" \. " fmt = vim.eval('a:format')\n" @@ -64,7 +65,10 @@ function s:msgpack_init_python() abort \. " try:\n" \. " timestamp = int(timestamp.timestamp())\n" \. " except:\n" - \. " timestamp = int(timestamp.strftime('%s'))\n" + \. " try:\n" + \. " timestamp = int(timestamp.strftime('%s'))\n" + \. " except:\n" + \. " timestamp = calendar.timegm(timestamp.utctimetuple())\n" \. " if timestamp > 2 ** 31:\n" \. " tsabs = abs(timestamp)\n" \. " return ('{\"_TYPE\": v:msgpack_types.integer,'\n"