Mercurial > hgrepos > DevTools > mercurial-extensions
changeset 180:d799c2be6e81
Make Timestamps values "datetime" instances
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Tue, 04 Sep 2018 09:37:17 +0200 |
| parents | fb754a9bd5e8 |
| children | bf58e5718f62 |
| files | extensions/timestamps.py |
| diffstat | 1 files changed, 24 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/extensions/timestamps.py Sat Sep 01 18:28:58 2018 +0200 +++ b/extensions/timestamps.py Tue Sep 04 09:37:17 2018 +0200 @@ -59,10 +59,11 @@ __author__ = "Franz Glasner" -import os +import collections +import datetime import io -import datetime -import collections +import os +import re from mercurial.i18n import _ from mercurial import (cmdutil, scmutil, config, util, error, match, @@ -78,6 +79,8 @@ TIMESTAMPS_CONFIGFILE = ".hgtimestamps" TIMESTAMPS_DATABASE = TIMESTAMPS_CONFIGFILE + ".db" +TIMESTAMP_FORMAT = re.compile(r"^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2})T(?P<hour>[0-9]{2}):(?P<minute>[0-9]{2}):(?P<second>[0-9]{2})(\.(?P<ms>[0-9]+))?Z$") + def getversion(): """Provide the version information for verbose :hg:`version` output. @@ -415,8 +418,23 @@ if k.startswith("/"): raise ValueError( "invalid absolute path in line %d" % lineno) - self._d[k] = v - datano += 1 + mo = TIMESTAMP_FORMAT.search(v) + if mo: + dtparts = [mo.group("year"), + mo.group("month"), + mo.group("day"), + mo.group("hour"), + mo.group("minute"), + mo.group("second")] + try: + dtparts.append(mo.group("ms")) + except LookupError: + pass # no milliseconds + self._d[k] = datetime.datetime( + *[int(d, 10) for d in dtparts]) + datano += 1 + else: + assert False elif not record: self._d["/-%d/" % lineno] = None elif len(record) == 1: @@ -483,5 +501,5 @@ else: raise ValueError("unknown key type in timestamps: %r" % k) else: - dbwriter.send((k, v)) + dbwriter.send((k, v.isoformat() + "Z")) dbwriter.close()
