Coverage for /home/benjarobin/Bootlin/projects/Schneider-Electric-Senux/sbom-cve-check/src/sbom_cve_check/utils/reproducible.py: 93%

15 statements  

« prev     ^ index     » next       coverage.py v7.11.1, created at 2025-11-28 15:37 +0100

1# -*- coding: utf-8 -*- 

2# SPDX-License-Identifier: GPL-2.0-only 

3 

4import os 

5from datetime import UTC, datetime 

6 

7from .class_utils import Singleton 

8 

9 

10class ReproducibleDateTime(metaclass=Singleton): 

11 def __init__(self) -> None: 

12 self._now = self._get_now() 

13 

14 @staticmethod 

15 def _get_now() -> datetime: 

16 src_date_epoch = os.environ.get("SOURCE_DATE_EPOCH") 

17 if src_date_epoch is not None: 

18 return datetime.fromtimestamp(int(src_date_epoch), tz=UTC) 

19 return datetime.now(UTC) 

20 

21 @property 

22 def now(self) -> datetime: 

23 return self._now