Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions src/setuptools_scm/version.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import datetime
import os
import re
import time
import warnings
from datetime import datetime
from datetime import timezone
from typing import Callable
from typing import Iterator
from typing import List
Expand Down Expand Up @@ -118,9 +118,11 @@ def __init__(
self.distance = distance
self.node = node
self.node_date = node_date
self.time = datetime.datetime.utcfromtimestamp(
int(os.environ.get("SOURCE_DATE_EPOCH", time.time()))
)
if "SOURCE_DATE_EPOCH" in os.environ:
date_epoch = int(os.environ["SOURCE_DATE_EPOCH"])
self.time = datetime.fromtimestamp(date_epoch, timezone.utc)
else:
self.time = datetime.now(timezone.utc)
self._extra = kw
self.dirty = dirty
self.preformatted = preformatted
Expand Down Expand Up @@ -351,12 +353,13 @@ def guess_next_date_ver(version, node_date=None, date_fmt=None, version_cls=None
# deduct date format if not provided
if date_fmt is None:
date_fmt = "%Y.%m.%d" if len(match.group("year")) == 4 else "%y.%m.%d"
head_date = node_date or datetime.date.today()
today = datetime.now(timezone.utc).date()
head_date = node_date or today
# compute patch
if match is None:
tag_date = datetime.date.today()
tag_date = today
else:
tag_date = datetime.datetime.strptime(match.group("date"), date_fmt).date()
tag_date = datetime.strptime(match.group("date"), date_fmt).date()
if tag_date == head_date:
patch = "0" if match is None else (match.group("patch") or "0")
patch = int(patch) + 1
Expand Down
3 changes: 2 additions & 1 deletion testing/test_git.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import sys
from datetime import date
from datetime import datetime
from datetime import timezone
from os.path import join as opj
from unittest.mock import Mock
from unittest.mock import patch
Expand Down Expand Up @@ -215,7 +216,7 @@ def test_git_dirty_notag(today, wd, monkeypatch):
assert wd.version.startswith("0.1.dev1")
if today:
# the date on the tag is in UTC
tag = datetime.utcnow().date().strftime(".d%Y%m%d")
tag = datetime.now(timezone.utc).date().strftime(".d%Y%m%d")
else:
tag = ".d20090213"
# we are dirty, check for the tag
Expand Down