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?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.

Installation

Use pip:

python -m pip install time-machine

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


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.


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 float or int specifying a Unix timestamp

  • A string, which will be parsed with dateutil.parse and converted to a timestamp. Again, if the result is naive, it will be assumed to have the UTC time zone.

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.gmtime()

  • time.localtime()

  • time.clock_gettime() (only for CLOCK_REALTIME)

  • time.clock_gettime_ns() (only for CLOCK_REALTIME)

  • 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. The zoneinfo module is new in Python 3.8 - on older Python versions use the backports.zoneinfo package, by the original zoneinfo author.

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 that has one method, move_to(), which has the same signature as Coordinates.move_to(). 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"

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.11.0.tar.gz (23.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded CPython 3.11Windows ARM64

time_machine-2.11.0-cp311-cp311-win_amd64.whl (19.5 kB view details)

Uploaded CPython 3.11Windows x86-64

time_machine-2.11.0-cp311-cp311-win32.whl (18.6 kB view details)

Uploaded CPython 3.11Windows x86

time_machine-2.11.0-cp311-cp311-musllinux_1_1_x86_64.whl (36.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

time_machine-2.11.0-cp311-cp311-musllinux_1_1_i686.whl (34.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ i686

time_machine-2.11.0-cp311-cp311-musllinux_1_1_aarch64.whl (36.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

time_machine-2.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (31.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

time_machine-2.11.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (31.0 kB view details)

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

time_machine-2.11.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (29.5 kB view details)

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

time_machine-2.11.0-cp311-cp311-macosx_13_0_arm64.whl (16.8 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

time_machine-2.11.0-cp311-cp311-macosx_10_9_x86_64.whl (16.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

time_machine-2.11.0-cp311-cp311-macosx_10_9_universal2.whl (19.9 kB view details)

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

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

Uploaded CPython 3.10Windows ARM64

time_machine-2.11.0-cp310-cp310-win_amd64.whl (19.6 kB view details)

Uploaded CPython 3.10Windows x86-64

time_machine-2.11.0-cp310-cp310-win32.whl (18.7 kB view details)

Uploaded CPython 3.10Windows x86

time_machine-2.11.0-cp310-cp310-musllinux_1_1_x86_64.whl (36.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

time_machine-2.11.0-cp310-cp310-musllinux_1_1_i686.whl (35.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

time_machine-2.11.0-cp310-cp310-musllinux_1_1_aarch64.whl (36.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

time_machine-2.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

time_machine-2.11.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (33.1 kB view details)

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

time_machine-2.11.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (31.4 kB view details)

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

time_machine-2.11.0-cp310-cp310-macosx_10_9_x86_64.whl (16.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

time_machine-2.11.0-cp310-cp310-macosx_10_9_universal2.whl (20.2 kB view details)

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

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

Uploaded CPython 3.9Windows ARM64

time_machine-2.11.0-cp39-cp39-win_amd64.whl (19.6 kB view details)

Uploaded CPython 3.9Windows x86-64

time_machine-2.11.0-cp39-cp39-win32.whl (18.7 kB view details)

Uploaded CPython 3.9Windows x86

time_machine-2.11.0-cp39-cp39-musllinux_1_1_x86_64.whl (36.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

time_machine-2.11.0-cp39-cp39-musllinux_1_1_i686.whl (34.9 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

time_machine-2.11.0-cp39-cp39-musllinux_1_1_aarch64.whl (36.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

time_machine-2.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

time_machine-2.11.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.8 kB view details)

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

time_machine-2.11.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (31.1 kB view details)

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

time_machine-2.11.0-cp39-cp39-macosx_10_9_x86_64.whl (16.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

time_machine-2.11.0-cp39-cp39-macosx_10_9_universal2.whl (20.2 kB view details)

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

time_machine-2.11.0-cp38-cp38-win_amd64.whl (19.6 kB view details)

Uploaded CPython 3.8Windows x86-64

time_machine-2.11.0-cp38-cp38-win32.whl (18.7 kB view details)

Uploaded CPython 3.8Windows x86

time_machine-2.11.0-cp38-cp38-musllinux_1_1_x86_64.whl (38.0 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

time_machine-2.11.0-cp38-cp38-musllinux_1_1_i686.whl (36.2 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ i686

time_machine-2.11.0-cp38-cp38-musllinux_1_1_aarch64.whl (37.9 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

time_machine-2.11.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

time_machine-2.11.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (33.7 kB view details)

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

time_machine-2.11.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (31.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

time_machine-2.11.0-cp38-cp38-macosx_10_9_x86_64.whl (16.5 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

time_machine-2.11.0-cp38-cp38-macosx_10_9_universal2.whl (20.2 kB view details)

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

File details

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

File metadata

  • Download URL: time_machine-2.11.0.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for time_machine-2.11.0.tar.gz
Algorithm Hash digest
SHA256 6c08a0f9ef8b53ca8b69c0be3f9ddb85a587a784fc239b74c35e6c47bf359515
MD5 fcdd2e20e2a010199ffef53fedc14f7e
BLAKE2b-256 ee0078cabaf3fd9de6b0ca9a27f397416629aaf5d70c2b05b37b80efc0db30d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 6a76908586b8d79cf4d38393f7b8164cedd9fad5e2100014351aff885d1ef5af
MD5 c2f1c763337481532219529fbb91fa85
BLAKE2b-256 5ee782557b69bd15fc4565362f07e09e1116a4c4421f0060a85c3dbda5dd1a58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e883660a606e696085fcc25833ed31a5227e201314c4e238c8abdaf937cd472f
MD5 585cdd9646717ca7e7bc1272a347a4e4
BLAKE2b-256 3b86fe98b8f3a63ed0bd88b7b9bcc03ce95ffb84baa8d612390e9683b65d2527

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.11.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 c6395911dad8c5ed138f143941ae4d40fd5da383649ac0ffe4c2f2a1ee88911a
MD5 4d10f400b1d4997069563e9e5e1faf08
BLAKE2b-256 59229f2e81705cf6582cd197e3502219712158c617f541518acedd6db818a645

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ee1d6ac1d292953dc90d1a39aef3f727ea02cce4426f025bc55d4c1553006044
MD5 41cbc19a641f9705633addec95e5df71
BLAKE2b-256 a5d939a89d6d24196e84c609e69d4c48c764f927fb840dff6f6a6b56d0b425be

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 86207d54f1b4f4eab78b55d120a686d8cb55da77131ba5c1fc5d593e74e58e62
MD5 0a5c656745ecbe4fcef419cf1c21f1a8
BLAKE2b-256 6dc3f991aa5ec14c17b28707d32d380dc10d362ac82449e68f63d4008b2d7bb6

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c29cb7f7358b34722c3f005aa3ca34cee22c057a642e648af82aada30a2281a9
MD5 c9ae5cc26c12186a5d8b58ac980ccffa
BLAKE2b-256 0e6c028e22430cb1aa0e32b3a7123f98f2104e473a2e073eeac00a7f1cc4ffa3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 98dff4645fddc1c7cddd2d22d56c10f87d23fd5091fbf03d65aa523de4f5de08
MD5 7d95d3b1fa9b335d7a2c1a28d551a7d3
BLAKE2b-256 ff079fdde4d4b45fb3cfb05e6300105a383a17dda507f371c932ed4cc9640007

See more details on using hashes here.

File details

Details for the file time_machine-2.11.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.11.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ddd6a83a4a86de62e125ed4431934602a1074a946b9243eae8cd76ebab78b73
MD5 26ff3dee4608d658d8fe4478b10f590f
BLAKE2b-256 ccc0cfe016161be7c4f6c819658f14039ca73b13c117ea63e9b47955329ff6bd

See more details on using hashes here.

File details

Details for the file time_machine-2.11.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.11.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b773c16427714b9f70a96e75834d47e4105450a9dcd75025b11f22a4e6b16c65
MD5 698dc69826a57ae89c91c28b455828ea
BLAKE2b-256 27db48b2f3cd2aa2127380f858e3334d45fbbcd8efa7dfbce09188f34c389939

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 945bb190b1f1a1d1b642cbe77c4bc3598c8085840a539904aed2b28790cca5d2
MD5 8c6f303d32842cceb9c02acfcaf0a7ab
BLAKE2b-256 692bfc2c20e0f0f09e83fc16e2b86af0b09b145b5f867b513da438e14698ed98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 628c2eb2037eff591ac8abefce20488930d6227158c080b3d3256a0855436431
MD5 df51bcef398f01c205edb7dad929d2e2
BLAKE2b-256 e705d24879e275285a9e037f58f4c2ff07a4fc54329aece5abfac3c8aa60a25b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f1b1c0cd878b432d724cca59f9fe57acf29c3d4a9cb1e6c70278b77c55b23523
MD5 35c618d997e991f069f5dce1c70a5cf3
BLAKE2b-256 e5081886640f458157b874776ca398589974566e2fdf6dc2aa6f9545bd1aafed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 c48c7705880608086dd9919173dd63985837e1b1db56ee048ff4797aed99018b
MD5 1957e5e1642ab2d7ad22c83480e01541
BLAKE2b-256 557e45f02b46e0a0527d5639344cfca6271e272806f6b2d5b65b15361155b545

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e26d26a318a609d3471ffb307c218ddb5c1514de65cb896bea0b230833340018
MD5 7bc739601042793857097de66516ad11
BLAKE2b-256 ccef26faa4c143802141c5a04f63f27d4a234ea3136b101d778e3cf844683cbd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.11.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 575342fbebceddf42a0d1cb3855db8d1bde26ac6fe969c6dc457ff227e63df2d
MD5 68a4c7244db9c0100667072a183cf145
BLAKE2b-256 d372632ffd52673c9d9f6337ebb29d9c665a72b7e82385c38eb9ff792a31f09e

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 863c7e74539741737fedc5fff8b0db4de53db9c9a9e5428c2b977f34daa97bad
MD5 9116b27715d91a4c8a3560edae74b70c
BLAKE2b-256 9161b4dcacced4a18eee1308d811f28d7704278fd91b0949713b948897e3803a

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 bdbf92b1a479356b97a277ed229d6b592f1fb14e71d3534b32346208eb7eff50
MD5 3507cf803788109f4e751c6b05a6f441
BLAKE2b-256 7206e8145589edf10fa1def5014c7486ec99225a1b299085b41a1eb07cab1f4e

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 13502936af3e58396327fcff6228f113c06d94dd9965070d8c8d1b6a8ef20167
MD5 7f5a616dde5ad35768a267bc4f110511
BLAKE2b-256 2b2f32852072f0ffd6ed8b785a98a11b2da567c7518ff1b494b280a1cc85bbce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d8cb21faf0192e9c7776921cec70dc36c54e69e3544effe2a3360700cc21b4ab
MD5 434070a30fc719cc4305e895bdd82f45
BLAKE2b-256 1597f6970e8f9f49bde2831c7babe08b666c5cc3d9c1dfe5479d4ce4c3649769

See more details on using hashes here.

File details

Details for the file time_machine-2.11.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.11.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dcccab530ff39935f62c325004f55958e3349d8dfc693bc6a96dffe692b6ef1b
MD5 c0e0e1c48ec9e44d3492f37018ffcd38
BLAKE2b-256 500455230edf6fb2ae48831fccad2a8276c5022edbbbede5b693da0898346793

See more details on using hashes here.

File details

Details for the file time_machine-2.11.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.11.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1a41e6be04a8290e353218827d288dd5070b02758eb69bb58b8c4a823115b4e9
MD5 6bfc84befa0ff38cd2c0bef7154aac18
BLAKE2b-256 c22d129d9e8c18635d9d00d4aca8fc3b7a64366e1fb64245fb3f5ce2137e8cbb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4cbeac9003319a4e84540c794e9be9cc2fa69abe5d0005091419a16b8e199ded
MD5 3c16f733d2a783888d538a7b9d6c0495
BLAKE2b-256 cd9b4902aa08615fd5d16fcadffb888fe376bef39c1e318c4d481b9f6562ca21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a6c25f03b634ff9389d2ff78f2f0168421a1be692cb8ab135202a8fda3e7b30a
MD5 29114e92fbed2a2be3ee36deee81f858
BLAKE2b-256 555ac9af6c4e2a1243f33dd8a8054455736d091d93c1429a4eb667b28ef80729

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 a80ae2c92735b01bd1cac7fa433a13a499c23748adb2399acab2b3c6f50d3742
MD5 a9dde159054c030c8f9381a6b713d369
BLAKE2b-256 43830f0761266391c83fc494b0739de0b231a1d6f650f36c8bcde32f7ec25356

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c518ea79f443f93f7e164b1ed8763c49685759b38b94bd436386cc216bf52103
MD5 e2e857771a485174d9c1763594e1a9c8
BLAKE2b-256 0edbf5ab99a6aef099ad305c043b78b6a31192a13cbc27be7ba5a2b9fbcedc6e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.11.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 defaed86af4fc06cee02a5e4ef7ae26ec17131f5e43d7820c559c95f28173710
MD5 79bc2debef575236fbb48396e7f8c961
BLAKE2b-256 4f03a36c623fcba492b57a10ef833336fb1e1e93002d7d3f896aa4d138541a2b

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 49da9ad3eda905534de6188e4040c857b9393d225ef1ce93d8ad477ba15b4714
MD5 5bccf59705c11c190b56b995bbaa7fe8
BLAKE2b-256 fa1b4023369560bf5d4828818ca7e1049a3140f119fc88f577c896ba08900541

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 be037615c9f0b81a9d101a44c8d88a34c6a202b5eb60a4dcacfba183d48ae0d2
MD5 4922b01084e01d587fcadb38b2bb6f70
BLAKE2b-256 468117e8e883d82c207f16004cebab47022772a995408a5ebbf184b775d52449

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b140c434c81331df16c3ca1654c7892aecf2fdfd4dc7b7136ca757a9847c1bf3
MD5 b49e5f3a8ca50e823a69249e4deba960
BLAKE2b-256 81bcae62613aa4f00b60eee6e79faaaa24e976cea5b4b5ebcf302c16f05bae62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2714a00be7fcd2fd2c0cd430470693a7914f936f5218c5d1f1c7632ad6b003cf
MD5 ad3f743c4a413145b3d4f68c5728dfbb
BLAKE2b-256 a1ea25ee1d8a7f1ff1745a847201e0318a00e34bca0bed9a601079b9940eeb5d

See more details on using hashes here.

File details

Details for the file time_machine-2.11.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.11.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2b53b29895addca43a065d66af6e632b165299e8b4b514b4f62870b71af9aff
MD5 4975a67bd2ea0774e3718791c975b5de
BLAKE2b-256 b93cc78170d904c7a92ffc05a7a0dd766e391975ab047ef0f35fde4777ea9f7e

See more details on using hashes here.

File details

Details for the file time_machine-2.11.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.11.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 64940b7f70d808c766f893c8f62d5fc1b2ec9217eebfbd50ad9cc4000325867d
MD5 a0f0e2632b2eebeb67056319c1e77c58
BLAKE2b-256 4ecb26bd480122626f12dd3fab08bfa7c0fe112aebcbe094c91c148c463b6c72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e0cd973d829a09c1eb9292270141b319606bca16e427ff8fcf0df69982c987a6
MD5 205a2992e925a403ff8b8f15fec00581
BLAKE2b-256 a769183634515538ac91032a819f828a8f2313f94e45afd73edab4a4a78bac6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.11.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 cc801788d230a55927f8dededff534014c8023ccd4baf89558d234a9e8bed3c7
MD5 7c2ef36fbc36286da10b9029e8edf39c
BLAKE2b-256 165324777786419fbed0a8138151c100272667418817b8abc0fa343afb45768a

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2c99bdd61d83fdd65ee61ad0b7d1e5cd8c85143ed6a4d0a4acb445a99e3646f9
MD5 253f454ab9806f5c750a1996033acdad
BLAKE2b-256 f6f66fb23457b69900e8e23ed046df299c3eb41458f2f97e9cdd90ffa60cfb3e

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: time_machine-2.11.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 855b6911ca20f6d4f118593ab79c5b45ee2311739944f8d1ddfdcc755f131c8e
MD5 1e2fdfd576a1d3d92b60f04237a1185d
BLAKE2b-256 39742d99253abf27f6e74903d536af1cde7cd67151fa219aecc4c08a96f2a91d

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 01c9732d7f396210fa384ec43c86395a94cb22f4687e9fdb972ecc05bb1b1570
MD5 fb5824c4e2ed81fe662e0e35b25c5999
BLAKE2b-256 b13b89ac2489acb3fda11855ceeeff4aadb19a34b68208539ee7b16d4ad7faf9

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 60ad90d8a4437c961be3b3de616fe12852eab802b87b086ac621b6a96eca125e
MD5 145022b5f5bdb9158329a0c9d048be44
BLAKE2b-256 7d72b156656bc751e18dc81c12d61d8928783c62a02c7d738ce38a17008a9c46

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 d876570c26ffce923032d1d9544a14fb48d764581fa96baa44cd3a40a9eab8a7
MD5 0c7de25b2b37fff26151c9e981938736
BLAKE2b-256 89a4978ac665628e1fae353a1e273a4eacef0ecade7860efa93809448b907c1e

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 72fa4edd05fbadd77ccb77e184414cff3137f7ff80c610146481c88080a2848c
MD5 48e17f576cce32336a7b7489250a1bd1
BLAKE2b-256 3cb7dd1c1ede8251ff81c0b08bd14a31f6f54afc2bfeb50ab2d89c7e7c58bc70

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-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.11.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8843a705cbd44971b39d25e24140c4922a836afb7a66311aa4fc437c0113a89
MD5 4ee4208dae6e0ba7d8d70b6be263a9b5
BLAKE2b-256 2bf5f5b2517818da85d063c600e0480e7eda51724fd32d2bd407c9bafff36b5b

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9fd4ab2f4a056c17e75e22cafd0461fcf94ae824d3140f7f0e9d513548ca6b6c
MD5 b4c0aaf1f28c120ab783d99821480d35
BLAKE2b-256 e9f9b208beb1be014528c0fc56d87e10f554dd3022384c3be27b4a42adff8ab7

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1406a9487224d68e7e756093b8009a1946c8899d414676740d934b09f7e12f40
MD5 b516320d034e25174c696ec7cd1a948f
BLAKE2b-256 31ce276fc8cdfa006269c3bc14b438bc876caf32bb6adf37f1ad0585d6d8faa8

See more details on using hashes here.

File details

Details for the file time_machine-2.11.0-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for time_machine-2.11.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 995de1e3d631be23c1ac340db75680cb04419205f652155fe5c40367a8810e6e
MD5 7bcc1201e9927cf5851cb9af3c55190d
BLAKE2b-256 836231453341d58c7f0e2b1a749dfbe43c5d7c859fc4a15440d6b8ce3bf3e882

See more details on using hashes here.

Supported by

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