commit 1229b178cd2eddced1d6de09033e3f067b80840a2c2a75e782804088cb965ec6 Author: Dirk Mueller Date: Wed Jan 28 12:28:09 2026 +0000 - 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. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-time-machine?expand=0&rev=39 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