|
1 |
| -import datetime |
2 | 1 | import os
|
3 | 2 | import re
|
4 |
| -import time |
5 | 3 | import warnings
|
| 4 | +from datetime import datetime |
| 5 | +from datetime import timezone |
6 | 6 | from typing import Callable
|
7 | 7 | from typing import Iterator
|
8 | 8 | from typing import List
|
@@ -118,9 +118,11 @@ def __init__(
|
118 | 118 | self.distance = distance
|
119 | 119 | self.node = node
|
120 | 120 | self.node_date = node_date
|
121 |
| - self.time = datetime.datetime.utcfromtimestamp( |
122 |
| - int(os.environ.get("SOURCE_DATE_EPOCH", time.time())) |
123 |
| - ) |
| 121 | + if "SOURCE_DATE_EPOCH" in os.environ: |
| 122 | + date_epoch = int(os.environ["SOURCE_DATE_EPOCH"]) |
| 123 | + self.time = datetime.fromtimestamp(date_epoch, timezone.utc) |
| 124 | + else: |
| 125 | + self.time = datetime.now(timezone.utc) |
124 | 126 | self._extra = kw
|
125 | 127 | self.dirty = dirty
|
126 | 128 | self.preformatted = preformatted
|
@@ -351,12 +353,13 @@ def guess_next_date_ver(version, node_date=None, date_fmt=None, version_cls=None
|
351 | 353 | # deduct date format if not provided
|
352 | 354 | if date_fmt is None:
|
353 | 355 | date_fmt = "%Y.%m.%d" if len(match.group("year")) == 4 else "%y.%m.%d"
|
354 |
| - head_date = node_date or datetime.date.today() |
| 356 | + today = datetime.now(timezone.utc).date() |
| 357 | + head_date = node_date or today |
355 | 358 | # compute patch
|
356 | 359 | if match is None:
|
357 |
| - tag_date = datetime.date.today() |
| 360 | + tag_date = today |
358 | 361 | else:
|
359 |
| - tag_date = datetime.datetime.strptime(match.group("date"), date_fmt).date() |
| 362 | + tag_date = datetime.strptime(match.group("date"), date_fmt).date() |
360 | 363 | if tag_date == head_date:
|
361 | 364 | patch = "0" if match is None else (match.group("patch") or "0")
|
362 | 365 | patch = int(patch) + 1
|
|
0 commit comments