Skip to main content

Travel through time in your tests.

Project description

https://img.shields.io/github/actions/workflow/status/adamchainz/time-machine/main.yml.svg?branch=main&style=for-the-badge https://img.shields.io/badge/Coverage-100%25-success?style=for-the-badge https://img.shields.io/pypi/v/time-machine.svg?style=for-the-badge https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge pre-commit

Travel through time in your tests.

A quick example:

import datetime as dt
from zoneinfo import ZoneInfo
import time_machine

hill_valley_tz = ZoneInfo("America/Los_Angeles")


@time_machine.travel(dt.datetime(1985, 10, 26, 1, 24, tzinfo=hill_valley_tz))
def test_delorean():
    assert dt.date.today().isoformat() == "1985-10-26"

For a bit of background, see the introductory blog post and the benchmark blog post.


Testing a Django project? Check out my book Speed Up Your Django Tests which covers loads of ways to write faster, more accurate tests. I created time-machine whilst writing the book.


Installation

Use pip:

python -m pip install time-machine

Python 3.9 to 3.13 supported. Only CPython is supported at this time because time-machine directly hooks into the C-level API.

Usage

If you’re coming from freezegun or libfaketime, see also the below section on migrating.

travel(destination, *, tick=True)

travel() is a class that allows time travel, to the datetime specified by destination. It does so by mocking 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.

destination specifies the datetime to move to. It may be:

  • A datetime.datetime. If it is naive, it will be assumed to have the UTC timezone. If it has tzinfo set to a zoneinfo.ZoneInfo instance, the current timezone will also be mocked.

  • A datetime.date. This will be converted to a UTC datetime with the time 00:00:00.

  • A datetime.timedelta. This will be interpreted relative to the current time. If already within a travel() block, the shift() method is easier to use (documented below).

  • A float or int specifying a Unix timestamp

  • A string, which will be parsed with dateutil.parse and converted to a timestamp. If the result is naive, it will be assumed to be local time.

Additionally, you can provide some more complex types:

  • A generator, in which case next() will be called on it, with the result treated as above.

  • A callable, in which case it will be called with no parameters, with the result treated as above.

tick defines whether time continues to “tick” after travelling, or is frozen. If True, the default, successive calls to mocked functions return values increasing by the elapsed real time since the first call. So after starting travel to 0.0 (the UNIX epoch), the first call to any datetime function will return its representation of 1970-01-01 00:00:00.000000 exactly. The following calls “tick,” so if a call was made exactly half a second later, it would return 1970-01-01 00:00:00.500000.

Mocked Functions

All datetime functions in the standard library are mocked to move to the destination current datetime:

  • datetime.datetime.now()

  • datetime.datetime.utcnow()

  • time.clock_gettime() (only for CLOCK_REALTIME)

  • time.clock_gettime_ns() (only for CLOCK_REALTIME)

  • time.gmtime()

  • time.localtime()

  • time.monotonic() (not a real monotonic clock, returns time.time())

  • time.monotonic_ns() (not a real monotonic clock, returns time.time_ns())

  • time.strftime()

  • time.time()

  • time.time_ns()

The mocking is done at the C layer, replacing the function pointers for these built-ins. Therefore, it automatically affects everywhere those functions have been imported, unlike use of unittest.mock.patch().

Usage with start() / stop()

To use independently, create an instance, use start() to move to the destination time, and stop() to move back. For example:

import datetime as dt
import time_machine

traveller = time_machine.travel(dt.datetime(1985, 10, 26))
traveller.start()
# It's the past!
assert dt.date.today() == dt.date(1985, 10, 26)
traveller.stop()
# We've gone back to the future!
assert dt.date.today() > dt.date(2020, 4, 29)

travel() instances are nestable, but you’ll need to be careful when manually managing to call their stop() methods in the correct order, even when exceptions occur. It’s recommended to use the decorator or context manager forms instead, to take advantage of Python features to do this.

Function Decorator

When used as a function decorator, time is mocked during the wrapped function’s duration:

import time
import time_machine


@time_machine.travel("1970-01-01 00:00 +0000")
def test_in_the_deep_past():
    assert 0.0 < time.time() < 1.0

You can also decorate asynchronous functions (coroutines):

import time
import time_machine


@time_machine.travel("1970-01-01 00:00 +0000")
async def test_in_the_deep_past():
    assert 0.0 < time.time() < 1.0

Beware: time is a global state - see below.

Context Manager

When used as a context manager, time is mocked during the with block:

import time
import time_machine


def test_in_the_deep_past():
    with time_machine.travel(0.0):
        assert 0.0 < time.time() < 1.0

Class Decorator

Only unittest.TestCase subclasses are supported. When applied as a class decorator to such classes, time is mocked from the start of setUpClass() to the end of tearDownClass():

import time
import time_machine
import unittest


@time_machine.travel(0.0)
class DeepPastTests(TestCase):
    def test_in_the_deep_past(self):
        assert 0.0 < time.time() < 1.0

Note this is different to unittest.mock.patch()'s behaviour, which is to mock only during the test methods. For pytest-style test classes, see the pattern documented below.

Timezone mocking

If the destination passed to time_machine.travel() or Coordinates.move_to() has its tzinfo set to a zoneinfo.ZoneInfo instance, the current timezone will be mocked. This will be done by calling time.tzset(), so it is only available on Unix.

time.tzset() changes the time module’s timezone constants and features that rely on those, such as time.localtime(). It won’t affect other concepts of “the current timezone”, such as Django’s (which can be changed with its timezone.override()).

Here’s a worked example changing the current timezone:

import datetime as dt
import time
from zoneinfo import ZoneInfo
import time_machine

hill_valley_tz = ZoneInfo("America/Los_Angeles")


@time_machine.travel(dt.datetime(2015, 10, 21, 16, 29, tzinfo=hill_valley_tz))
def test_hoverboard_era():
    assert time.tzname == ("PST", "PDT")
    now = dt.datetime.now()
    assert (now.hour, now.minute) == (16, 29)

Coordinates

The start() method and entry of the context manager both return a Coordinates object that corresponds to the given “trip” in time. This has a couple methods that can be used to travel to other times.

move_to(destination, tick=None)

move_to() moves the current time to a new destination. destination may be any of the types supported by travel.

tick may be set to a boolean, to change the tick flag of travel.

For example:

import datetime as dt
import time
import time_machine

with time_machine.travel(0, tick=False) as traveller:
    assert time.time() == 0

    traveller.move_to(234)
    assert time.time() == 234

shift(delta)

shift() takes one argument, delta, which moves the current time by the given offset. delta may be a timedelta or a number of seconds, which will be added to destination. It may be negative, in which case time will move to an earlier point.

For example:

import datetime as dt
import time
import time_machine

with time_machine.travel(0, tick=False) as traveller:
    assert time.time() == 0

    traveller.shift(dt.timedelta(seconds=100))
    assert time.time() == 100

    traveller.shift(-dt.timedelta(seconds=10))
    assert time.time() == 90

pytest plugin

time-machine also works as a pytest plugin. It provides a function-scoped fixture called time_machine with methods move_to() and shift(), which have the same signature as their equivalents in Coordinates. This can be used to mock your test at different points in time and will automatically be un-mock when the test is torn down.

For example:

import datetime as dt


def test_delorean(time_machine):
    time_machine.move_to(dt.datetime(1985, 10, 26))

    assert dt.date.today().isoformat() == "1985-10-26"

    time_machine.move_to(dt.datetime(2015, 10, 21))

    assert dt.date.today().isoformat() == "2015-10-21"

    time_machine.shift(dt.timedelta(days=1))

    assert dt.date.today().isoformat() == "2015-10-22"

If you are using pytest test classes, you can apply the fixture to all test methods in a class by adding an autouse fixture:

import time

import pytest


class TestSomething:
    @pytest.fixture(autouse=True)
    def set_time(self, time_machine):
        time_machine.move_to(1000.0)

    def test_one(self):
        assert int(time.time()) == 1000.0

    def test_two(self, time_machine):
        assert int(time.time()) == 1000.0
        time_machine.move_to(2000.0)
        assert int(time.time()) == 2000.0

escape_hatch

The escape_hatch object provides functions to bypass time-machine. These allow you to call the real datetime functions, without any mocking. It also provides a way to check if time-machine is currently time travelling.

These capabilities are useful in rare circumstances. For example, if you need to authenticate with an external service during time travel, you may need the real value of datetime.now().

The functions are:

  • escape_hatch.is_travelling() -> bool - returns True if time_machine.travel() is active, False otherwise.

  • escape_hatch.datetime.datetime.now() - wraps the real datetime.datetime.now().

  • escape_hatch.datetime.datetime.utcnow() - wraps the real datetime.datetime.utcnow().

  • escape_hatch.time.clock_gettime() - wraps the real time.clock_gettime().

  • escape_hatch.time.clock_gettime_ns() - wraps the real time.clock_gettime_ns().

  • escape_hatch.time.gmtime() - wraps the real time.gmtime().

  • escape_hatch.time.localtime() - wraps the real time.localtime().

  • escape_hatch.time.strftime() - wraps the real time.strftime().

  • escape_hatch.time.time() - wraps the real time.time().

  • escape_hatch.time.time_ns() - wraps the real time.time_ns().

For example:

import time_machine


with time_machine.travel(...):
    if time_machine.escape_hatch.is_travelling():
        print("We need to go back to the future!")

    real_now = time_machine.escape_hatch.datetime.datetime.now()
    external_authenticate(now=real_now)

Caveats

Time is a global state. Any concurrent threads or asynchronous functions are also be affected. Some aren’t ready for time to move so rapidly or backwards, and may crash or produce unexpected results.

Also beware that other processes are not affected. For example, if you use SQL datetime functions on a database server, they will return the real time.

Comparison

There are some prior libraries that try to achieve the same thing. They have their own strengths and weaknesses. Here’s a quick comparison.

unittest.mock

The standard library’s unittest.mock can be used to target imports of datetime and time to change the returned value for current time. Unfortunately, this is fragile as it only affects the import location the mock targets. Therefore, if you have several modules in a call tree requesting the date/time, you need several mocks. This is a general problem with unittest.mock - see Why Your Mock Doesn’t Work.

It’s also impossible to mock certain references, such as function default arguments:

def update_books(_now=time.time):  # set as default argument so faster lookup
    for book in books:
        ...

Although such references are rare, they are occasionally used to optimize highly repeated loops.

freezegun

Steve Pulec’s freezegun library is a popular solution. It provides a clear API which was much of the inspiration for time-machine.

The main drawback is its slow implementation. It essentially does a find-and-replace mock of all the places that the datetime and time modules have been imported. This gets around the problems with using unittest.mock, but it means the time it takes to do the mocking is proportional to the number of loaded modules. In large projects, this can take several seconds, an impractical overhead for an individual test.

It’s also not a perfect search, since it searches only module-level imports. Such imports are definitely the most common way projects use date and time functions, but they’re not the only way. freezegun won’t find functions that have been “hidden” inside arbitrary objects, such as class-level attributes.

It also can’t affect C extensions that call the standard library functions, including (I believe) Cython-ized Python code.

python-libfaketime

Simon Weber’s python-libfaketime wraps the libfaketime library. libfaketime replaces all the C-level system calls for the current time with its own wrappers. It’s therefore a “perfect” mock for the current process, affecting every single point the current time might be fetched, and performs much faster than freezegun.

Unfortunately python-libfaketime comes with the limitations of LD_PRELOAD. This is a mechanism to replace system libraries for a program as it loads (explanation). This causes two issues in particular when you use python-libfaketime.

First, LD_PRELOAD is only available on Unix platforms, which prevents you from using it on Windows.

Second, you have to help manage LD_PRELOAD. You either use python-libfaketime’s reexec_if_needed() function, which restarts (re-execs) your test process while loading, or manually manage the LD_PRELOAD environment variable. Neither is ideal. Re-execing breaks anything that might wrap your test process, such as profilers, debuggers, and IDE test runners. Manually managing the environment variable is a bit of overhead, and must be done for each environment you run your tests in, including each developer’s machine.

time-machine

time-machine is intended to combine the advantages of freezegun and libfaketime. It works without LD_PRELOAD but still mocks the standard library functions everywhere they may be referenced. Its weak point is that other libraries using date/time system calls won’t be mocked. Thankfully this is rare. It’s also possible such python libraries can be added to the set mocked by time-machine.

One drawback is that it only works with CPython, so can’t be used with other Python interpreters like PyPy. However it may possible to extend it to support other interpreters through different mocking mechanisms.

Migrating from libfaketime or freezegun

freezegun has a useful API, and python-libfaketime copies some of it, with a different function name. time-machine also copies some of freezegun’s API, in travel()'s destination, and tick arguments, and the shift() method. There are a few differences:

  • time-machine’s tick argument defaults to True, because code tends to make the (reasonable) assumption that time progresses whilst running, and should normally be tested as such. Testing with time frozen can make it easy to write complete assertions, but it’s quite artificial. Write assertions against time ranges, rather than against exact values.

  • freezegun interprets dates and naive datetimes in the local time zone (including those parsed from strings with dateutil). This means tests can pass when run in one time zone and fail in another. time-machine instead interprets dates and naive datetimes in UTC so they are fixed points in time. Provide time zones where required.

  • freezegun’s tick() method has been implemented as shift(), to avoid confusion with the tick argument. It also requires an explicit delta rather than defaulting to 1 second.

  • freezegun’s tz_offset argument is not supported, since it only partially mocks the current time zone. Time zones are more complicated than a single offset from UTC, and freezegun only uses the offset in time.localtime(). Instead, time-machine will mock the current time zone if you give it a datetime with a ZoneInfo timezone.

Some features aren’t supported like the auto_tick_seconds argument. These may be added in a future release.

If you are only fairly simple function calls, you should be able to migrate by replacing calls to freezegun.freeze_time() and libfaketime.fake_time() with time_machine.travel().

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

time_machine-2.16.0.tar.gz (24.6 kB view details)

Uploaded Source

Built Distributions

time_machine-2.16.0-cp313-cp313-win_arm64.whl (18.0 kB view details)

Uploaded CPython 3.13 Windows ARM64

time_machine-2.16.0-cp313-cp313-win_amd64.whl (19.9 kB view details)

Uploaded CPython 3.13 Windows x86-64

time_machine-2.16.0-cp313-cp313-win32.whl (19.1 kB view details)

Uploaded CPython 3.13 Windows x86

time_machine-2.16.0-cp313-cp313-musllinux_1_2_x86_64.whl (33.0 kB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

time_machine-2.16.0-cp313-cp313-musllinux_1_2_i686.whl (31.5 kB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ i686

time_machine-2.16.0-cp313-cp313-musllinux_1_2_aarch64.whl (33.4 kB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

time_machine-2.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.8 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

time_machine-2.16.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (33.4 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

time_machine-2.16.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (31.7 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

time_machine-2.16.0-cp313-cp313-macosx_10_13_x86_64.whl (16.7 kB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

time_machine-2.16.0-cp313-cp313-macosx_10_13_universal2.whl (20.2 kB view details)

Uploaded CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)

time_machine-2.16.0-cp312-cp312-win_arm64.whl (18.0 kB view details)

Uploaded CPython 3.12 Windows ARM64

time_machine-2.16.0-cp312-cp312-win_amd64.whl (19.9 kB view details)

Uploaded CPython 3.12 Windows x86-64

time_machine-2.16.0-cp312-cp312-win32.whl (19.1 kB view details)

Uploaded CPython 3.12 Windows x86

time_machine-2.16.0-cp312-cp312-musllinux_1_2_x86_64.whl (33.0 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

time_machine-2.16.0-cp312-cp312-musllinux_1_2_i686.whl (31.5 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

time_machine-2.16.0-cp312-cp312-musllinux_1_2_aarch64.whl (33.3 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

time_machine-2.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

time_machine-2.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (33.4 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

time_machine-2.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (31.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

time_machine-2.16.0-cp312-cp312-macosx_10_9_x86_64.whl (16.6 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

time_machine-2.16.0-cp312-cp312-macosx_10_9_universal2.whl (20.2 kB view details)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

time_machine-2.16.0-cp311-cp311-win_arm64.whl (18.0 kB view details)

Uploaded CPython 3.11 Windows ARM64

time_machine-2.16.0-cp311-cp311-win_amd64.whl (19.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

time_machine-2.16.0-cp311-cp311-win32.whl (19.0 kB view details)

Uploaded CPython 3.11 Windows x86

time_machine-2.16.0-cp311-cp311-musllinux_1_2_x86_64.whl (31.9 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

time_machine-2.16.0-cp311-cp311-musllinux_1_2_i686.whl (30.6 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

time_machine-2.16.0-cp311-cp311-musllinux_1_2_aarch64.whl (32.2 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

time_machine-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (32.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

time_machine-2.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

time_machine-2.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (30.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

time_machine-2.16.0-cp311-cp311-macosx_10_9_x86_64.whl (16.6 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

time_machine-2.16.0-cp311-cp311-macosx_10_9_universal2.whl (20.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

time_machine-2.16.0-cp310-cp310-win_arm64.whl (18.1 kB view details)

Uploaded CPython 3.10 Windows ARM64

time_machine-2.16.0-cp310-cp310-win_amd64.whl (20.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

time_machine-2.16.0-cp310-cp310-win32.whl (19.1 kB view details)

Uploaded CPython 3.10 Windows x86

time_machine-2.16.0-cp310-cp310-musllinux_1_2_x86_64.whl (33.7 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

time_machine-2.16.0-cp310-cp310-musllinux_1_2_i686.whl (32.4 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

time_machine-2.16.0-cp310-cp310-musllinux_1_2_aarch64.whl (34.0 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

time_machine-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (34.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

time_machine-2.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

time_machine-2.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (32.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

time_machine-2.16.0-cp310-cp310-macosx_10_9_x86_64.whl (16.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

time_machine-2.16.0-cp310-cp310-macosx_10_9_universal2.whl (20.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

time_machine-2.16.0-cp39-cp39-win_arm64.whl (18.1 kB view details)

Uploaded CPython 3.9 Windows ARM64

time_machine-2.16.0-cp39-cp39-win_amd64.whl (20.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

time_machine-2.16.0-cp39-cp39-win32.whl (19.1 kB view details)

Uploaded CPython 3.9 Windows x86

time_machine-2.16.0-cp39-cp39-musllinux_1_2_x86_64.whl (33.5 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

time_machine-2.16.0-cp39-cp39-musllinux_1_2_i686.whl (32.1 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

time_machine-2.16.0-cp39-cp39-musllinux_1_2_aarch64.whl (33.8 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

time_machine-2.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (34.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

time_machine-2.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

time_machine-2.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (32.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

time_machine-2.16.0-cp39-cp39-macosx_10_9_x86_64.whl (16.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

time_machine-2.16.0-cp39-cp39-macosx_10_9_universal2.whl (20.5 kB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file time_machine-2.16.0.tar.gz.

File metadata

  • Download URL: time_machine-2.16.0.tar.gz
  • Upload date:
  • Size: 24.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for time_machine-2.16.0.tar.gz
Algorithm Hash digest
SHA256 4a99acc273d2f98add23a89b94d4dd9e14969c01214c8514bfa78e4e9364c7e2
MD5 11ea19c7bea3fc9a3b4d9d08b890043f
BLAKE2b-256 fbdd5022939b9cadefe3af04f4012186c29b8afbe858b1ec2cfa38baeec94dab

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 4d3843143c46dddca6491a954bbd0abfd435681512ac343169560e9bab504129
MD5 85b4fa69c087ad590083fe397c1810c6
BLAKE2b-256 3575c4d8b2f0fe7dac22854d88a9c509d428e78ac4bf284bc54cfe83f75cc13b

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f6927dda86425f97ffda36131f297b1a601c64a6ee6838bfa0e6d3149c2f0d9f
MD5 7395a4901962e4eafbb2d774f4996649
BLAKE2b-256 3d4027f5738fbd50b78dcc0682c14417eac5a49ccf430525dd0c5a058be125a2

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-win32.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 32d445ce20d25c60ab92153c073942b0bac9815bfbfd152ce3dcc225d15ce988
MD5 c8ffddc176a04c46bc1072ce162be88e
BLAKE2b-256 726364e9156c9e38c18720d0cc41378168635241de44013ffe3dd5b099447eb0

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8243664438bb468408b29c6865958662d75e51f79c91842d2794fa22629eb697
MD5 cc9846ee6a85f76acfd3b4c3eb05d096
BLAKE2b-256 1dbaa27cdbb324d9a6d779cde0d514d47b696b5a6a653705d4b511fd65ef1514

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 520a814ea1b2706c89ab260a54023033d3015abef25c77873b83e3d7c1fafbb2
MD5 44bc4628c1b321c38fdeb584ec80b52a
BLAKE2b-256 9140d0d274d70fa2c4cad531745deb8c81346365beb0a2736be05a3acde8b94a

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 da3ae1028af240c0c46c79adf9c1acffecc6ed1701f2863b8132f5ceae6ae4b5
MD5 afdb4ce25637ab832ff30cb524a3c397
BLAKE2b-256 95f7ed9ecd93c2d38dca77d0a28e070020f3ce0fb23e0d4a6edb14bcfffa5526

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2f5876a5682ce1f517e55d7ace2383432627889f6f7e338b961f99d684fd9e8d
MD5 64f52c842e83ff39c74e3a0e6bd4bc2d
BLAKE2b-256 a2968b76d264014bf9dc21873218de50d67223c71736f87fe6c65e582f7c29ac

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 667b150fedb54acdca2a4bea5bf6da837b43e6dd12857301b48191f8803ba93f
MD5 eb9ddee3593e45be368863d54f710f7a
BLAKE2b-256 3ec19f142beb4d373a2a01ebb58d5117289315baa5131d880ec804db49e94bf7

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 806672529a2e255cd901f244c9033767dc1fa53466d0d3e3e49565a1572a64fe
MD5 cae1a6e5914c1f02d4c01b0102b1a41d
BLAKE2b-256 5c1359ae8259be02b6c657ef6e3b6952bf274b43849f6f35cc61a576c68ce301

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1784edf173ca840ba154de6eed000b5727f65ab92972c2f88cec5c4d6349c5f2
MD5 ceaff70d2eca14eda0142b67ca536fc2
BLAKE2b-256 03a3fcc3eaf69390402ecf491d718e533b6d0e06d944d77fc8d87be3a2839102

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 7751bf745d54e9e8b358c0afa332815da9b8a6194b26d0fd62876ab6c4d5c9c0
MD5 b939b9f5f4d951a6789898766df6a466
BLAKE2b-256 a6183087d0eb185cedbc82385f46bf16032ec7102a0e070205a2c88c4ecf9952

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 ef768e14768eebe3bb1196c0dece8e14c1c6991605721214a0c3c68cf77eb216
MD5 e49cf4c0064b3528c1c16528b7d72ecc
BLAKE2b-256 aab67047226fcb9afefe47fc80f605530535bf71ad99b6797f057abbfa4cd9a5

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 265462c77dc9576267c3c7f20707780a171a9fdbac93ac22e608c309efd68c33
MD5 b7a97f189c299357621068a3dbf619bd
BLAKE2b-256 d47cd4e67cc031f9653c92167ccf87d241e3208653d191c96ac79281c273ab92

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-win32.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 6dae82ab647d107817e013db82223e20a9853fa88543fec853ae326382d03c2e
MD5 89a5ca6a00d6f8e840b5eda574e9897d
BLAKE2b-256 d4ee75243df9c7cf30f108758e887141a58e6544baaa46e2e647b9ccc56db819

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0c766bea27a0600e36806d628ebc4b47178b12fcdfb6c24dc0a566a9c06bfe7f
MD5 46015896af13847e76f717b728abeff7
BLAKE2b-256 d79544c1aa3994919f93534244c40cfd2fb9416d7686dc0c8b9b262c751b5118

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e43adb22def972a29d2b147999b56897116085777a0fea182fd93ee45730611e
MD5 0bbfb61686be294f67bd4e2355f90459
BLAKE2b-256 684e205c2b26763b8817cd6b8868242843800a1fbf275f2af35f5ba35ff2b01a

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 43e1e18279759897be3293a255d53e6b1cb0364b69d9591d0b80c51e461c94b0
MD5 4f445100e885decd5b83e9535a963fe0
BLAKE2b-256 89712c6a63ad4fbce3d62d46bbd9ac4433f30bade7f25978ce00815b905bcfcf

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cedc989717c8b44a3881ac3d68ab5a95820448796c550de6a2149ed1525157f0
MD5 92d99e1f5a759b88577e026dd953d854
BLAKE2b-256 da1327f11be25d7bd298e033b9da93217e5b68309bf724b6e494cdadb471d00d

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 317b68b56a9c3731e0cf8886e0f94230727159e375988b36c60edce0ddbcb44a
MD5 ced69a2913203f7da11c5232b8de53f9
BLAKE2b-256 a1cb93bc0e51bea4e171a85151dbba3c3b3f612b50b953cd3076f5b4f0db9e14

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9d26d79de1c63a8c6586c75967e09b0ff306aa7e944a1eaddb74595c9b1839ca
MD5 014b9343988b6eba5a611958a8bf80c3
BLAKE2b-256 e69d70e4640fed1fd8122204ae825c688d0ef8c04f515ec6bf3c5f3086d6510e

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 15ec236b6571730236a193d9d6c11d472432fc6ab54e85eac1c16d98ddcd71bf
MD5 7f9d462a9c8c4836e62e658f999b02a3
BLAKE2b-256 d894dbe69aecb4b84be52d34814e63176c5ca61f38ee9e6ecda11104653405b5

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 84788f4d62a8b1bf5e499bb9b0e23ceceea21c415ad6030be6267ce3d639842f
MD5 ab805a7a43095fb41a430867b3d9534b
BLAKE2b-256 4af4603a84e7ae6427a53953db9f61b689dc6adf233e03c5f5ca907a901452fd

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 ac2df0fa564356384515ed62cb6679f33f1f529435b16b0ec0f88414635dbe39
MD5 248fa6f18f2f4bbc8a50914c92619289
BLAKE2b-256 8ac0788500d33656a044e3289b814106c2277209ac73316c00b9668012ce6027

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 12474fcdbc475aa6fe5275fe7224e685c5b9777f5939647f35980e9614ae7558
MD5 6bfdaff5506784f5e34c614b7e949f92
BLAKE2b-256 34c9f4764e447aa9da4031c89da60fa69f4f73fd45571415788c298cbd4620e9

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-win32.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 2552f0767bc10c9d668f108fef9b487809cdeb772439ce932e74136365c69baf
MD5 ff4847219c1a4599ff58cd6272fd7f71
BLAKE2b-256 fc97e1a8bd64e5432adf47859cb63847b4472efc644b508602141c60ccf52112

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9db5e5b3ccdadaafa5730c2f9db44c38b013234c9ad01f87738907e19bdba268
MD5 0a3fb1e5ccfb1565a3e3f7af17daca84
BLAKE2b-256 191f37a5a9333a2da35b0fc43e8ac693b82dd5492892131bc3cc0c8f5835af94

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 eee7b0fc4fbab2c6585ea17606c6548be83919c70deea0865409fe9fc2d8cdce
MD5 b166867f265c28293e2c2c3a47d547ea
BLAKE2b-256 e953b1ccb55f39e7e62660f852d7aedef438d2872ea9c73f64be46d0d3b3f3d7

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 503e7ff507c2089699d91885fc5b9c8ff16774a7b6aff48b4dcee0c0a0685b61
MD5 320d95a89eed2f7edd90061e29d4e281
BLAKE2b-256 b1f72522ae1c1995a39d6d8b7ee7efed47ec8bd7ff3240fdb2662a8b7e11b84a

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c76caf539fa4941e1817b7c482c87c65c52a1903fea761e84525955c6106fafb
MD5 5778e4d6a89a078ee3e749c3538091b9
BLAKE2b-256 0d24ce1ff76c9a4f3be88c2b947f2411a5a8019390734597d3106a151f8a9416

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3391ae9c484736850bb44ef125cbad52fe2d1b69e42c95dc88c43af8ead2cc7
MD5 458925597c506210f632382478c61d73
BLAKE2b-256 dac6f490aaddc80c54238f4b8fe97870bbfe0d2c70fe4a57269badc94f5f38a6

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 298aa423e07c8b21b991782f01d7749c871c792319c2af3e9755f9ab49033212
MD5 d7823bacdcbf25ad5ede103ca2804c95
BLAKE2b-256 08d7ba1135587bd2ed105e59ed7e05969c913277d110fecc0ed871006ea3f763

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5886e23ede3478ca2a3e0a641f5d09dd784dfa9e48c96e8e5e31fc4fe77b6dc0
MD5 6dab12fe0b8967d4826177d2bc69d0de
BLAKE2b-256 68cb7d020d5c05d0460a4a96232b0777882ef989c1e6144d11ba984c4b0b4d1a

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 8f936566ef9f09136a3d5db305961ef6d897b76b240c9ff4199144aed6dd4fe5
MD5 af6c18a6c07827005bcacadbd67ed739
BLAKE2b-256 387b34aad93f75f86503dd1fa53bc120d8129fe4de83aef58ffa78c62b044ef9

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-win_arm64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 6895e3e84119594ab12847c928f619d40ae9cedd0755515dc154a5b5dc6edd9f
MD5 9357d2590062bf1beb9786dd4ec56e28
BLAKE2b-256 54cb6507c6594f086bc955ff200cc4fd415d2ab229371ca3ba8fc3d27429a9cc

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 01bc257e9418980a4922de94775be42a966e1a082fb01a1635917f9afc7b84ca
MD5 5919356139c12ace182ecc8f4893f6e4
BLAKE2b-256 7ee75946d62d49e79b97c6772fe2918eccbd069d74effa8d50bdca4056502aeb

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 4149e17018af07a5756a1df84aea71e6e178598c358c860c6bfec42170fa7970
MD5 fca42caecaf4fc3f74e76e9b6a09d080
BLAKE2b-256 8bd4ae909a269828eaa7672e1201403976e794ea679ae7ba04fe0c0c0c65c2b6

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c0fca3025266d88d1b48be162a43b7c2d91c81cc5b3bee9f01194678ffb9969a
MD5 e6dac575c55fe4c668129b15e23b93f8
BLAKE2b-256 a525c0f26294808946ec5b665f17a0072049a3f9e2468abc18aa8fe22580b4cf

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d5fe7a6284e3dce87ae13a25029c53542dd27a28d151f3ef362ec4dd9c3e45fd
MD5 4a73bf231fe1e4beb458a2f3dcc0ee57
BLAKE2b-256 e54d068ad9660f00f88a54f3ff7e9d423ed5c08a5f8147518f6c66fd0393dde7

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dfe92412bd11104c4f0fb2da68653e6c45b41f7217319a83a8b66ed4f20148b3
MD5 c16350245305013570d42ba77b6433f3
BLAKE2b-256 a91e178b9e3d0054300a4dd0485747c89359e5f719f090ae5165c88618793700

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7c29616e18e2349a8766d5b6817920fc74e39c00fa375d202231e9d525a1b882
MD5 dbd7c56a4ea1c905717cff68192d6a07
BLAKE2b-256 d47f3a78d50fec64edd9964bf42b66a2e659a9846669ac8f705acc363ee79d3a

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64c205ea37b8c4ba232645335fc3b75bc2d03ce30f0a34649e36cae85652ee96
MD5 15004b22e105aef9cf3f3c873ad344d7
BLAKE2b-256 8ec2edf5ccb2fa529251eb7f1cfb34098c0ef236dbb88f0a6564d06f6f8378f5

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c1ceb6035a64cb00650e3ab203cf3faffac18576a3f3125c24df468b784077c7
MD5 2fbd4839dbe4378e51a9beae2250a79a
BLAKE2b-256 61007cf1324d8f8db8f5dab71c44ed1e9c11c4f1cecca9d4363abf44154aa13b

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 92d0b0f3c49f34dd76eb462f0afdc61ed1cb318c06c46d03e99b44ebb489bdad
MD5 4690aed7c6b50fcf617734c177b0bba2
BLAKE2b-256 b1e6f3bc391d5642e69299f2d1f0a46e7f98d1669e82b1e16c8cf3c6e4615059

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 09531af59fdfb39bfd24d28bd1e837eff5a5d98318509a31b6cfd57d27801e52
MD5 db6ba4929cac8921a1d73de2c428525f
BLAKE2b-256 794732fdb8e70122edbc8be9db1f032d22b38e3d9ef0bf52c64470d0815cdb62

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-win_arm64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 2e08a4015d5d1aab2cb46c780e85b33efcd5cbe880bb363b282a6972e617b8bb
MD5 5b8843f03980c8fd69a9b86d6604b1fa
BLAKE2b-256 3036470c7d77d3a5c7e6a5e29ac40495b8dd3b66f3058ab8bdc823706fec1353

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ddfab1c622342f2945942c5c2d6be327656980e8f2d2b2ce0c022d0aa3711361
MD5 85a2a26e635112fb232bebc88f95c8f5
BLAKE2b-256 630b95bfa4a2b3a893d91de8304d98edbeb4e29b864977ef36929aa6eda1357f

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: time_machine-2.16.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 c761d32d0c5d1fe5b71ac502e1bd5edec4598a7fc6f607b9b906b98e911148ce
MD5 41e7e3fa8da5fcf80eeb461e723b1cee
BLAKE2b-256 962c9f14cd6fb912995e9984e67b8160071e8950cd7b0a787796d58b45324269

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1e0dcc97cfec12ae306e3036746e7631cc7ef65c31889f7264c25217d4938367
MD5 39b389e067b7aad234194c14c3ccbfa4
BLAKE2b-256 0445bcc3304b545a15f614ecb12b277ec8d93fe0f67fa74e9e4b856e4ecba4c6

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cac3e2b4101db296b150cb665e5461c03621e6ede6117fc9d5048c0ec96d6e7c
MD5 701772f83d1d612d21bb4741b089a017
BLAKE2b-256 345f91df8e8465a2d5a168c25eebf5a62d813f30e01909c32749dbbd442b66db

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e46bd09c944ec7a20868abd2b83d7d7abdaf427775e9df3089b9226a122b340f
MD5 0e3c27355b4c9e20d4ad47bd5a142c64
BLAKE2b-256 39a9c962c702b94ca4c7fd8264bc9baed431bd92d4ee2aa698dd92ff6e864164

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dfb76674db946a74f0ca6e3b81caa8265e35dafe9b7005c7d2b8dd5bbd3825cf
MD5 0f6bdd7d2e0d8a25aa311c0aaf930037
BLAKE2b-256 c347c8d388d6e061be146cf357bce727221f1d1d60dff2a36b880cb26e1a3199

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1906ec6e26e6b803cd6aab28d420c87285b9c209ff2a69f82d12f82278f78bb
MD5 d73fe91e8bef465a02ab559dd5df6678
BLAKE2b-256 6abce827239b0020195f4e2fa4e7fdf248838bb49230be2bf374181fac892a92

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d0b6ff3ccde9b16bbc694a2b5facf2d8890554f3135ff626ed1429e270e3cc4f
MD5 756ddd18c7cc8948a78a962db550047c
BLAKE2b-256 d2beb0fb8693f2e9dfb5b50c5a89bb1d6ff8d4705075722b7987c0f1e18c6694

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ac95ae4529d7d85b251f9cf0f961a8a408ba285875811268f469d824a3b0b15a
MD5 c09f1f71f534ddf6d5da97393364fde8
BLAKE2b-256 b9582bd28329c3c47de58c9234d177e809bed29d9e54729da79b5d0d8bc47e5e

See more details on using hashes here.

File details

Details for the file time_machine-2.16.0-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for time_machine-2.16.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 23c5283c01b4f80b7dfbc88f3d8088c06c301b94b7c35366be498c2d7b308549
MD5 d188959d2ba6f404ddae332bfde6e6bf
BLAKE2b-256 dfaa6d4925b22f3f5f53e2bcb12923f2463cac8c7c2360ac55196d51546787a5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page