diff --git a/python-time-machine-2.16.0.tar.gz b/python-time-machine-2.16.0.tar.gz deleted file mode 100644 index a87de42..0000000 --- a/python-time-machine-2.16.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -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.changes b/python-time-machine.changes index edd3f86..1b56361 100644 --- a/python-time-machine.changes +++ b/python-time-machine.changes @@ -1,3 +1,66 @@ +------------------------------------------------------------------- +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 diff --git a/python-time-machine.spec b/python-time-machine.spec index a25a18f..d142e42 100644 --- a/python-time-machine.spec +++ b/python-time-machine.spec @@ -1,7 +1,7 @@ # # spec file for package python-time-machine # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 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 @@ -16,13 +16,12 @@ # -%{?sle15_python_module_pythons} Name: python-time-machine -Group: Development/Languages/Python -Version: 2.16.0 +Version: 3.1.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 @@ -30,17 +29,19 @@ 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 pytest} BuildRequires: %{python_module python-dateutil} +BuildRequires: %{python_module tokenize-rt} BuildRequires: timezone # /SECTION -BuildRequires: fdupes -BuildRequires: python-rpm-generators -Requires: python-python-dateutil -Requires: timezone %python_subpackages %description @@ -55,7 +56,7 @@ It can be used independently, as a function decorator, or as a context manager. %install %pyproject_install -%python_expand %fdupes %{buildroot}%{$python_sitelib} +%python_expand %fdupes %{buildroot}%{$python_sitearch} %check %pytest_arch @@ -65,6 +66,6 @@ It can be used independently, as a function decorator, or as a context manager. %license LICENSE %{python_sitearch}/time_machine %{python_sitearch}/_time_machine.*.so -%{python_sitearch}/time_machine-%{version}.dist-info +%{python_sitearch}/time_machine-%{version}*-info %changelog