commit:     26e99a0b9a1662eb2e75a67757fcd0ba1f95e536
Author:     Brian Harring <ferringb <AT> gmail <DOT> com>
AuthorDate: Fri Nov 21 23:27:28 2025 +0000
Commit:     Brian Harring <ferringb <AT> gmail <DOT> com>
CommitDate: Fri Nov 21 23:34:29 2025 +0000
URL:        
https://gitweb.gentoo.org/proj/pkgcore/snakeoil.git/commit/?id=26e99a0b

fix: update tests and back out the datetime object

Turns out code further down the line is serializing this
data into a file by hand, so it has to be kept to primitives.

Signed-off-by: Brian Harring <ferringb <AT> gmail.com>

 src/snakeoil/dist/utilities.py |  4 ++--
 src/snakeoil/version.py        |  9 ++++-----
 tests/test_version.py          | 11 +++++++----
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/snakeoil/dist/utilities.py b/src/snakeoil/dist/utilities.py
index 7cd9f2b..9696d97 100644
--- a/src/snakeoil/dist/utilities.py
+++ b/src/snakeoil/dist/utilities.py
@@ -1,7 +1,7 @@
+import datetime
 import errno
 import os
 import re
-from datetime import datetime
 
 from ..version import get_git_version
 
@@ -32,7 +32,7 @@ def module_version(repodir, moduledir):
         if tag is None:
             commits = git_version['commits']
             rev = git_version['rev'][:7]
-            date = git_version['datetime'].strftime("%Y%m%d")
+            date = datetime.datetime.fromtimestamp(git_version['timestamp'], 
datetime.UTC).strftime("%Y%m%d")
             if commits is not None:
                 version += f'.dev{commits}'
             version += f'+g{rev}.d{date}'

diff --git a/src/snakeoil/version.py b/src/snakeoil/version.py
index c0d6d89..1c88b4a 100644
--- a/src/snakeoil/version.py
+++ b/src/snakeoil/version.py
@@ -84,7 +84,8 @@ def get_git_version(path):
             return None
 
         (ref, timestamp) = stdout.decode().splitlines()
-        datetime_obj = datetime.datetime.fromtimestamp(int(timestamp))
+        timestamp = int(timestamp)
+        datetime_obj = datetime.datetime.fromtimestamp(timestamp, datetime.UTC)
         tag = _get_git_tag(path, ref)
 
         # get number of commits since most recent tag
@@ -97,13 +98,11 @@ def get_git_version(path):
             if ret == 0:
                 commits = len(stdout.decode().splitlines())
 
-        # historically, this code
         return {
             "rev": ref,
-            # include this so any code that can do date localization, does so.
-            "datetime": datetime_obj,
             # ... and force this to american norms, since that's the 
historical behavior.
-            "date": datetime_obj.strftime("%a, %d %b %Y %H:%M:%S %z"),
+            "date": datetime_obj.strftime("%a %b %d %H:%M:%S %Y"),
+            "timestamp": timestamp,
             "tag": tag,
             "commits": commits,
         }

diff --git a/tests/test_version.py b/tests/test_version.py
index 23118b3..23afb5b 100644
--- a/tests/test_version.py
+++ b/tests/test_version.py
@@ -3,6 +3,7 @@ from importlib import reload
 from unittest import mock
 
 import pytest
+
 from snakeoil import __version__, version
 
 
@@ -102,13 +103,14 @@ class TestGitVersion:
         with mock.patch("snakeoil.version._run_git") as run_git:
             # dev version
             run_git.return_value = (
-                b"1ff76b021d208f7df38ac524537b6419404f1c64\nMon Sep 25 
13:50:24 2017 -0400",
+                b"1ff76b021d208f7df38ac524537b6419404f1c64\n1506361824",
                 0,
             )
             result = version.get_git_version("nonexistent")
             expected = {
                 "rev": "1ff76b021d208f7df38ac524537b6419404f1c64",
-                "date": "Mon Sep 25 13:50:24 2017 -0400",
+                "date": "Mon Sep 25 17:50:24 2017",
+                "timestamp": 1506361824,
                 "tag": None,
                 "commits": 2,
             }
@@ -121,14 +123,15 @@ class TestGitVersion:
         ):
             # tagged, release version
             run_git.return_value = (
-                b"1ff76b021d208f7df38ac524537b6419404f1c64\nMon Sep 25 
13:50:24 2017 -0400",
+                b"1ff76b021d208f7df38ac524537b6419404f1c64\n1506361824",
                 0,
             )
             get_git_tag.return_value = "1.1.1"
             result = version.get_git_version("nonexistent")
             expected = {
                 "rev": "1ff76b021d208f7df38ac524537b6419404f1c64",
-                "date": "Mon Sep 25 13:50:24 2017 -0400",
+                "date": "Mon Sep 25 17:50:24 2017",
+                "timestamp": 1506361824,
                 "tag": "1.1.1",
                 "commits": 2,
             }

Reply via email to