Provide timezone information in `datetime.fromtimestamp`

Python 3.12 has deprecated ``datetime.utcfromtimestamp``,
use timezone-aware datetime objects instead.
This commit is contained in:
Adam Turner 2023-07-24 12:39:50 +01:00
parent 82bc15aec3
commit 914c317a1e
2 changed files with 7 additions and 6 deletions

View File

@ -9,7 +9,7 @@ import re
import sys import sys
import warnings import warnings
import zlib import zlib
from datetime import datetime from datetime import datetime, timezone
from os import path from os import path
from typing import IO, Any, Iterable, Iterator, List, Tuple, Type from typing import IO, Any, Iterable, Iterator, List, Tuple, Type
from urllib.parse import quote from urllib.parse import quote
@ -432,10 +432,11 @@ class StandaloneHTMLBuilder(Builder):
logger.debug( logger.debug(
'[build target] targetname %r(%s), template(%s), docname %r(%s)', '[build target] targetname %r(%s), template(%s), docname %r(%s)',
targetname, targetname,
datetime.utcfromtimestamp(targetmtime), datetime.fromtimestamp(targetmtime, tz=timezone.utc),
datetime.utcfromtimestamp(template_mtime), datetime.fromtimestamp(template_mtime, tz=timezone.utc),
docname, docname,
datetime.utcfromtimestamp(path.getmtime(self.env.doc2path(docname))), datetime.fromtimestamp(path.getmtime(self.env.doc2path(docname)),
tz=timezone.utc),
) )
yield docname yield docname
except OSError: except OSError:

View File

@ -193,9 +193,9 @@ def format_date(
# See https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal # See https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal
source_date_epoch = os.getenv('SOURCE_DATE_EPOCH') source_date_epoch = os.getenv('SOURCE_DATE_EPOCH')
if source_date_epoch is not None: if source_date_epoch is not None:
date = datetime.utcfromtimestamp(float(source_date_epoch)) date = datetime.fromtimestamp(float(source_date_epoch), tz=timezone.utc)
else: else:
date = datetime.now(timezone.utc).astimezone() date = datetime.now(tz=timezone.utc).astimezone()
result = [] result = []
tokens = date_format_re.split(format) tokens = date_format_re.split(format)