aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2021-11-06 11:10:08 -0400
committerJames McCoy <jamessan@jamessan.com>2021-12-25 12:11:34 -0500
commitfb14e2a8d6aacfb02578c2e191f26cfdf416bfde (patch)
treee43ebfdfd790bd103d68b6ad4747a4a12107de1d
parent9e93e5c0c8ea5bfe96f94e5c357d93f0315920e2 (diff)
downloadrneovim-fb14e2a8d6aacfb02578c2e191f26cfdf416bfde.tar.gz
rneovim-fb14e2a8d6aacfb02578c2e191f26cfdf416bfde.tar.bz2
rneovim-fb14e2a8d6aacfb02578c2e191f26cfdf416bfde.zip
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())`.
-rw-r--r--runtime/autoload/msgpack.vim6
1 files changed, 5 insertions, 1 deletions
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"