From 1229b178cd2eddced1d6de09033e3f067b80840a2c2a75e782804088cb965ec6 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Wed, 28 Jan 2026 12:28:09 +0000 Subject: [PATCH] =?UTF-8?q?-=20update=20to=203.2.0:=20=20=20*=20Add=20:att?= =?UTF-8?q?r:`time=5Fmachine.naive=5Fmode`=20to=20control=20how=20time-=20?= =?UTF-8?q?=20=20=20=20machine=20interprets=20naive=20datetimes.=20The=20d?= =?UTF-8?q?efault=20mode=20is=20=20=20=20=20MIXED,=20which=20preserves=20e?= =?UTF-8?q?xisting=20behaviour:=20naive=20datetime=20=20=20=20=20objects?= =?UTF-8?q?=20and=20date=20objects=20are=20interpreted=20as=20UTC,=20while?= =?UTF-8?q?=20naive=20=20=20=20=20datetime=20strings=20are=20interpreted?= =?UTF-8?q?=20as=20local=20time.=20Three=20=20=20=20=20alternative=20modes?= =?UTF-8?q?=20are=20available:=20=20UTC:=20naive=20datetimes=20are=20=20?= =?UTF-8?q?=20=20=20always=20interpreted=20as=20UTC.=20LOCAL:=20naive=20da?= =?UTF-8?q?tetimes=20are=20=20=20=20=20interpreted=20as=20local=20time,=20?= =?UTF-8?q?matching=20Python's=20default=20=20=20=20=20semantics,=20and=20?= =?UTF-8?q?freezegun.=20ERROR:=20naive=20datetimes=20raise=20a=20=20=20=20?= =?UTF-8?q?=20RuntimeError,=20ensuring=20your=20tests=20are=20isolated=20f?= =?UTF-8?q?rom=20the=20=20=20=20=20current=20timezone.=20=20=20Note=20It?= =?UTF-8?q?=E2=80=99s=20recommended=20you=20use=20LOCAL=20or=20=20=20=20?= =?UTF-8?q?=20ERROR=20to=20avoid=20confusion=20around=20naive=20datetimes.?= =?UTF-8?q?=20=20PR=20#591.=20=20=20=20=20Thanks=20to=20Paolo=20Melchiorre?= =?UTF-8?q?=20for=20review.=20Thanks=20to=20PhML,=20=20=20=20=20Stefaan=20?= =?UTF-8?q?Lippens,=20Matthieu=20Rigal,=20Nikita=20Demir,=20Steve=20Mavens?= =?UTF-8?q?,=20=20=20=20=20Andy=20Freeland,=20and=20Paul=20Ganssle=20for?= =?UTF-8?q?=20their=20input=20on=20Issue=20=20=20=20=20#257.=20=20=20*=20U?= =?UTF-8?q?TC:=20naive=20datetimes=20are=20always=20interpreted=20as=20UTC?= =?UTF-8?q?.=20=20=20*=20LOCAL:=20naive=20datetimes=20are=20interpreted=20?= =?UTF-8?q?as=20local=20time,=20=20=20=20=20matching=20Python's=20default?= =?UTF-8?q?=20semantics,=20and=20freezegun.=20=20=20*=20ERROR:=20naive=20d?= =?UTF-8?q?atetimes=20raise=20a=20RuntimeError,=20ensuring=20your=20=20=20?= =?UTF-8?q?=20=20tests=20are=20isolated=20from=20the=20current=20timezone.?= =?UTF-8?q?=20=20=20*=20Raise=20RuntimeError=20when=20attempting=20to=20st?= =?UTF-8?q?art=20time=20travelling=20=20=20=20=20if=20freezegun=20is=20act?= =?UTF-8?q?ive.=20This=20change=20should=20help=20avoid=20=20=20=20=20surp?= =?UTF-8?q?rises=20when=20migrating=20complex=20test=20suites=20from=20fre?= =?UTF-8?q?ezegun=20=20=20=20=20to=20time-machine.=20PR=20#590.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-time-machine?expand=0&rev=39 --- .gitattributes | 23 +++ .gitignore | 1 + python-time-machine-2.16.0.tar.gz | 3 + python-time-machine-3.1.0.tar.gz | 3 + python-time-machine-3.2.0.tar.gz | 3 + python-time-machine.changes | 259 ++++++++++++++++++++++++++++++ python-time-machine.spec | 72 +++++++++ 7 files changed, 364 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 python-time-machine-2.16.0.tar.gz create mode 100644 python-time-machine-3.1.0.tar.gz create mode 100644 python-time-machine-3.2.0.tar.gz create mode 100644 python-time-machine.changes create mode 100644 python-time-machine.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/python-time-machine-2.16.0.tar.gz b/python-time-machine-2.16.0.tar.gz new file mode 100644 index 0000000..a87de42 --- /dev/null +++ b/python-time-machine-2.16.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2ed8ebef04133d69bce09114bbf66be0d404d725597874a644318af6e0b3e28 +size 30522 diff --git a/python-time-machine-3.1.0.tar.gz b/python-time-machine-3.1.0.tar.gz new file mode 100644 index 0000000..2585e1f --- /dev/null +++ b/python-time-machine-3.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ccc9add7f678a2652249d12efea446db0540acc90240ae9327d2fdcbba4f920 +size 75765 diff --git a/python-time-machine-3.2.0.tar.gz b/python-time-machine-3.2.0.tar.gz new file mode 100644 index 0000000..93c7c37 --- /dev/null +++ b/python-time-machine-3.2.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c74880a913e25b30de6be7645fa81b8ff374f0332dbbfd6c22d9445729cee637 +size 85884 diff --git a/python-time-machine.changes b/python-time-machine.changes new file mode 100644 index 0000000..03ebbcf --- /dev/null +++ b/python-time-machine.changes @@ -0,0 +1,259 @@ +------------------------------------------------------------------- +Wed Jan 28 12:27:44 UTC 2026 - Dirk Müller + +- update to 3.2.0: + * Add :attr:`time_machine.naive_mode` to control how time- + machine interprets naive datetimes. The default mode is + MIXED, which preserves existing behaviour: naive datetime + objects and date objects are interpreted as UTC, while naive + datetime strings are interpreted as local time. Three + alternative modes are available: UTC: naive datetimes are + always interpreted as UTC. LOCAL: naive datetimes are + interpreted as local time, matching Python's default + semantics, and freezegun. ERROR: naive datetimes raise a + RuntimeError, ensuring your tests are isolated from the + current timezone. Note It’s recommended you use LOCAL or + ERROR to avoid confusion around naive datetimes. PR #591. + Thanks to Paolo Melchiorre for review. Thanks to PhML, + Stefaan Lippens, Matthieu Rigal, Nikita Demir, Steve Mavens, + Andy Freeland, and Paul Ganssle for their input on Issue + #257. + * UTC: naive datetimes are always interpreted as UTC. + * LOCAL: naive datetimes are interpreted as local time, + matching Python's default semantics, and freezegun. + * ERROR: naive datetimes raise a RuntimeError, ensuring your + tests are isolated from the current timezone. + * Raise RuntimeError when attempting to start time travelling + if freezegun is active. This change should help avoid + surprises when migrating complex test suites from freezegun + to time-machine. PR #590. + +------------------------------------------------------------------- +Tue Dec 9 21:22:28 UTC 2025 - Matej Cepl + +- Update to 3.1.0 + - Optimize patching of uuid module. By avoiding using + unittest.mock, this small overhead from starting + time_machine.travel() has been reduced about 20x, from ~600ns + to ~30ns by one benchmark. +- Update to 3.0.0 + - Remove mocking of time.monotonic() and time.monotonic_ns(). + This mocking caused too many issues, such as causing freezes + in asyncio event loops (Issue #387), preventing + pytest-durations from timing tests correctly (Issue #505), + and triggering timeouts in psycopg (Issue #509). The root + cause here is that mocking the monotonic clock breaks its + contract, allowing it to move backwards when it’s meant to + only move forwards. + As an alternative, use unittest.mock to mock the monotonic + function for the specific tested modules that need it. That + means that your code should import monotonic() or + monotonic_ns() directly, so that your tests can mock it in + those places only. + - Parse str destinations with datetime.fromisoformat() first, + before falling back to dateutil if installed. + datetime.fromisoformat() can parse most valid ISO 8601 + formats, with better performance and no extra dependencies. + - Make the dependency on dateutil optional. + - Rename the Coordinates class to Traveller, to match the + recommended context manager variable name. + - Drop Python 3.9 support. + - Make the escape_hatch functions raise ValueError when called + outside of time-travelling, rather than triggering + segmentation faults. +- Update to 2.19.0 + - Add marker support to the pytest plugin. Decorate tests with + @pytest.mark.time_machine() to set time during a test, + affecting function-level fixtures as well. + - Add asynchronous context manager support to time_machine.travel(). You can + now use async with time_machine.travel(...): in asynchronous code, per the + documentation. + - Import date and time functions once in the C extension. + - This should improve speed a little bit, and avoid segmentation faults when + the functions have been swapped out, such as when freezegun is in effect. + (time-machine still won’t apply if freezegun is in effect.) +- Update to 2.18.0 + - Update the migration CLI to detect unittest classes based on whether they + use self.assert* methods like self.assertEqual(). + - Fix free-threaded Python warning: RuntimeWarning: The global interpreter + lock (GIL) has been enabled... as seen on Python 3.13+. + - Add support to travel() for datetime destinations with tzinfo set to + datetime.UTC (datetime.timezone.utc). + - Prevent segmentation faults in unlikely scenarios, such as if the + time_machine module cannot be imported. + - Make travel() fully unpatch date and time functions when travel ends. This + may fix certain edge cases. +- Update to 2.17.0 + - Include wheels for Python 3.14. + - Support free-threaded Python. + - Add a new CLI for migrating code from freezegun to time-machine. + - Install with pip install time-machine[cli] and run with python -m + time_machine migrate. + - Move the documentation to Read the Docs, and add a retro-futuristic logo. + +------------------------------------------------------------------- +Wed Oct 30 19:50:38 UTC 2024 - Dirk Müller + +- update to 2.16.0: + * Drop Python 3.8 support. + * Include wheels for Python 3.13. + +------------------------------------------------------------------- +Sun Jun 30 08:25:19 UTC 2024 - Dirk Müller + +- update to 2.14.2: + * Fix SystemError on Python 3.13 and Windows when starting time + travelling. + +------------------------------------------------------------------- +Sat Apr 20 08:01:44 UTC 2024 - Dirk Müller + +- update to 2.14.1: + * Fix segmentation fault when the first travel() call in a + process uses a timedelta. + +------------------------------------------------------------------- +Thu Mar 14 08:17:15 UTC 2024 - Dirk Müller + +- update to 2.14.0: + * Fix utcfromtimestamp() warning on Python 3.12+. + * Fix utcfromtimestamp() warning on Python 3.12+. + * Fix class decorator for classmethod overrides. + * Avoid calling deprecated uuid._load_system_functions() on + Python 3.9+. + * Avoid calling deprecated uuid._load_system_functions() on + Python 3.9+. + * Thanks to Nikita Sobolev for the ping in CPython Issue + * Support Python 3.13 alpha 4. + +------------------------------------------------------------------- +Thu Nov 9 09:05:38 UTC 2023 - ecsos + +- Update to 2.13.0 + - Add support for datetime.timedelta to time_machine.travel(). + - Fix documentation about using local time for naive date(time) strings. + - Add shift() method to the time_machine pytest fixture. + - Mock time.monotonic() and time.monotonic_ns(). + They return the values of time.time() and time.time_ns() + respectively, rather than real monotonic clocks. +- Changes from 2.12.0 + - Include wheels for Python 3.12. +- Changes from 2.11.0 + - Drop Python 3.7 support. +- Changes from 2.10.0 + - Support Python 3.12. + +------------------------------------------------------------------- +Fri Jun 9 06:20:34 UTC 2023 - ecsos + +- Add %{?sle15_python_module_pythons} + +------------------------------------------------------------------- +Wed May 31 09:26:06 UTC 2023 - Ben Greiner + +- Move to PEP517 +- Do not use pytzdata, but system timezone directly +- Don't catchall sitearch + +------------------------------------------------------------------- +Sat May 27 19:44:39 UTC 2023 - Dirk Müller + +- update to 2.9.0: + * Explicitly error when attempting to install on PyPy. + +------------------------------------------------------------------- +Tue Apr 11 08:32:21 UTC 2023 - Dominique Leuenberger + +- BuildRequire python38-backports.zoneinfo only when python38-base + is present in the buildsystem: fix build on distros where python + 3.8 is no longer in the supported set of python interpreters. + +------------------------------------------------------------------- +Sat Oct 29 16:04:03 UTC 2022 - Yogalakshmi Arunachalam + +- Update to version 2.8.2 + * Improve type hints for time_machine.travel() to preserve the types of the wrapped function/coroutine/class. + +------------------------------------------------------------------- +Thu Aug 18 07:00:08 UTC 2022 - Sebastian Wagner + +- update to version 2.8.1: + - Actually build Python 3.11 wheels. +- update to version 2.8.0: + - Build Python 3.11 wheels. +- update to version 2.7.1: + - Fix usage of ``ZoneInfo`` from the ``backports.zoneinfo`` package. + This makes ``ZoneInfo`` support work for Python < 3.9. +- update to version 2.7.0: + - Support Python 3.11 (no wheels yet, they will only be available when Python 3.11 is RC when the ABI is stable). + +------------------------------------------------------------------- +Tue Jan 11 10:01:09 UTC 2022 - Sebastian Wagner + +- Limit package to python >= 3.7 + +------------------------------------------------------------------- +Mon Jan 10 17:18:47 UTC 2022 - Sebastian Wagner + +- update to version 2.6.0: + * Drop Python 3.6 support. + +------------------------------------------------------------------- +Tue Dec 14 15:06:54 UTC 2021 - Sebastian Wagner + +- update to version 2.5.0: + * Add ``time_machine.escape_hatch``, which provides functions to bypass + time-machine. + Thanks to Matt Pegler for the feature request in `Issue #206 + `__. + +------------------------------------------------------------------- +Tue Dec 14 07:40:10 UTC 2021 - pgajdos@suse.com + +- pytest-runner is not required for build + +------------------------------------------------------------------- +Sat Nov 27 14:29:53 UTC 2021 - Sebastian Wagner + +- update to version 2.4.1: + - Build musllinux wheels. + +------------------------------------------------------------------- +Sat Sep 4 17:54:02 UTC 2021 - Sebastian Wagner + +- update to version 2.4.0: + - Support Python 3.10. + +------------------------------------------------------------------- +Fri Jul 30 08:23:35 UTC 2021 - Sebastian Wagner + +- update to version 2.3.1: + - Build universal2 wheels for Python 3.8 on macOS. +- update to version 2.3.0: + - Allow passing ``tick`` to ``Coordinates.move_to()`` and the pytest fixture’s + ``time_machine.move_to()``. This allows freezing or unfreezing of time when + travelling. + +------------------------------------------------------------------- +Sat Jul 3 13:17:35 UTC 2021 - Sebastian Wagner + +- update to version 2.2.0: + - Include type hints. + - Convert C module to use PEP 489 multi-phase extension module initialization. + This makes the module ready for Python sub-interpreters. + - Release now includes a universal2 wheel for Python 3.9 on macOS, to work on + Apple Silicon. + - Stop distributing tests to reduce package size. Tests are not intended to be + run outside of the tox setup in the repository. Repackagers can use GitHub's + tarballs per tag. + +------------------------------------------------------------------- +Sat May 29 07:50:49 UTC 2021 - Sebastian Wagner + +- skip python2 to fix leap build +- add missing group tag to fix leap build + +------------------------------------------------------------------- +Tue May 25 11:43:44 UTC 2021 - Sebastian Wagner + +- initial package for version 2.1.0. diff --git a/python-time-machine.spec b/python-time-machine.spec new file mode 100644 index 0000000..6da7612 --- /dev/null +++ b/python-time-machine.spec @@ -0,0 +1,72 @@ +# +# spec file for package python-time-machine +# +# Copyright (c) 2026 SUSE LLC and contributors +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: python-time-machine +Version: 3.2.0 +Release: 0 +Summary: Travel through time in your tests +License: MIT +Group: Development/Languages/Python +URL: https://github.com/adamchainz/time-machine +# pypi packages don't contain the tests anymore since 2.2.0, see changelog +Source: https://github.com/adamchainz/time-machine/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz +BuildRequires: %{python_module devel >= 3.8} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-generators +BuildRequires: python-rpm-macros +Requires: python-python-dateutil +Requires: python-tokenize-rt +Requires: timezone +# SECTION tests +BuildRequires: %{python_module backports.zoneinfo if %python-base < 3.9} +BuildRequires: %{python_module freezegun} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module python-dateutil} +BuildRequires: %{python_module tokenize-rt} +BuildRequires: timezone +# /SECTION +%python_subpackages + +%description +This library mocks all functions from Python's standard library that return the current date or datetime. +It can be used independently, as a function decorator, or as a context manager. + +%prep +%setup -q -n time-machine-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitearch} + +%check +%pytest_arch + +%files %{python_files} +%doc README.rst HISTORY.rst +%license LICENSE +%{python_sitearch}/time_machine +%{python_sitearch}/_time_machine.*.so +%{python_sitearch}/time_machine-%{version}*-info + +%changelog