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,
}