Skip to main content

Travel through time in your tests.

Project description

https://img.shields.io/github/workflow/status/adamchainz/time-machine/CI/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.7 to 3.11 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.8.1.tar.gz (23.8 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.8.1-cp311-cp311-win_amd64.whl (19.3 kB view details)

Uploaded CPython 3.11Windows x86-64

time_machine-2.8.1-cp311-cp311-win32.whl (18.5 kB view details)

Uploaded CPython 3.11Windows x86

time_machine-2.8.1-cp311-cp311-musllinux_1_1_x86_64.whl (36.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

time_machine-2.8.1-cp311-cp311-musllinux_1_1_i686.whl (34.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ i686

time_machine-2.8.1-cp311-cp311-musllinux_1_1_aarch64.whl (36.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

time_machine-2.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (31.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

time_machine-2.8.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30.9 kB view details)

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

time_machine-2.8.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (29.4 kB view details)

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

time_machine-2.8.1-cp311-cp311-macosx_10_9_x86_64.whl (16.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

time_machine-2.8.1-cp311-cp311-macosx_10_9_universal2.whl (19.7 kB view details)

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

time_machine-2.8.1-cp310-cp310-win_amd64.whl (19.4 kB view details)

Uploaded CPython 3.10Windows x86-64

time_machine-2.8.1-cp310-cp310-win32.whl (18.6 kB view details)

Uploaded CPython 3.10Windows x86

time_machine-2.8.1-cp310-cp310-musllinux_1_1_x86_64.whl (36.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

time_machine-2.8.1-cp310-cp310-musllinux_1_1_i686.whl (35.0 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

time_machine-2.8.1-cp310-cp310-musllinux_1_1_aarch64.whl (36.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

time_machine-2.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

time_machine-2.8.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.9 kB view details)

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

time_machine-2.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (31.3 kB view details)

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

time_machine-2.8.1-cp310-cp310-macosx_10_9_x86_64.whl (16.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

time_machine-2.8.1-cp310-cp310-macosx_10_9_universal2.whl (20.1 kB view details)

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

time_machine-2.8.1-cp39-cp39-win_amd64.whl (19.4 kB view details)

Uploaded CPython 3.9Windows x86-64

time_machine-2.8.1-cp39-cp39-win32.whl (18.6 kB view details)

Uploaded CPython 3.9Windows x86

time_machine-2.8.1-cp39-cp39-musllinux_1_1_x86_64.whl (36.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

time_machine-2.8.1-cp39-cp39-musllinux_1_1_i686.whl (34.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

time_machine-2.8.1-cp39-cp39-musllinux_1_1_aarch64.whl (36.3 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

time_machine-2.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (32.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

time_machine-2.8.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.6 kB view details)

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

time_machine-2.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (31.0 kB view details)

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

time_machine-2.8.1-cp39-cp39-macosx_10_9_x86_64.whl (16.4 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

time_machine-2.8.1-cp39-cp39-macosx_10_9_universal2.whl (20.1 kB view details)

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

time_machine-2.8.1-cp38-cp38-win_amd64.whl (19.4 kB view details)

Uploaded CPython 3.8Windows x86-64

time_machine-2.8.1-cp38-cp38-win32.whl (18.5 kB view details)

Uploaded CPython 3.8Windows x86

time_machine-2.8.1-cp38-cp38-musllinux_1_1_x86_64.whl (37.9 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

time_machine-2.8.1-cp38-cp38-musllinux_1_1_i686.whl (36.1 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ i686

time_machine-2.8.1-cp38-cp38-musllinux_1_1_aarch64.whl (37.8 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

time_machine-2.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

time_machine-2.8.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (33.5 kB view details)

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

time_machine-2.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (31.7 kB view details)

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

time_machine-2.8.1-cp38-cp38-macosx_10_9_x86_64.whl (16.3 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

time_machine-2.8.1-cp38-cp38-macosx_10_9_universal2.whl (20.0 kB view details)

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

time_machine-2.8.1-cp37-cp37m-win_amd64.whl (19.4 kB view details)

Uploaded CPython 3.7mWindows x86-64

time_machine-2.8.1-cp37-cp37m-win32.whl (18.5 kB view details)

Uploaded CPython 3.7mWindows x86

time_machine-2.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl (35.8 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

time_machine-2.8.1-cp37-cp37m-musllinux_1_1_i686.whl (34.1 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ i686

time_machine-2.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl (35.8 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

time_machine-2.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (30.7 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

time_machine-2.8.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

time_machine-2.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (28.4 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

time_machine-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl (16.2 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

Details for the file time-machine-2.8.1.tar.gz.

File metadata

  • Download URL: time-machine-2.8.1.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for time-machine-2.8.1.tar.gz
Algorithm Hash digest
SHA256 4779029fa192fc36f782c1032a44be76ce8b75b1f0b7ec746647cb950b620bb7
MD5 3f742d423ddf909e4cad96dc347c4036
BLAKE2b-256 647da277dc43bf45f70201bb9deec2632e12e71ee99e0a7e4142eaf248b4a96c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 53cd5c30e8624b6852aa474b359a90e6eda8d934fc57c17b62034b42c65dd4d0
MD5 84507e41d8088ec8b607a0adba068ce1
BLAKE2b-256 35661414a8a7c03d93d4a70daa41b0a3c31688ae2d82bbcd756a7cf41213e818

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.8.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 f9f428a5308a293053d0859ed0963aff08ae530fe1ff20143c302b0f1a8bf32c
MD5 d25af61889b7fd754ede19ad35ec65e3
BLAKE2b-256 9b331fb8654458d21e179a6aa1127336db56777c28d48d9a434bb35236440454

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 127ba425bed80afc16dbff97f9bae0dc3dc1584c98eed16bd4b7d935638e4a78
MD5 def68ffcad670545bdac2c4e0a96841d
BLAKE2b-256 d798704152e49290c4eb475eac774f46dd07bdbfdeabac065294d3d0141eb703

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 0d45c2e485d8bde26f6db6188a2d760ff130c017258e8987d221fa78bcd48bee
MD5 079552b7d1768f77a34144ebcf526735
BLAKE2b-256 04cb87cf2d95924927a87ebff64573b17640bf5d1b1301066f56cfa390642b4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 18099c2ac06c1ce7e5dd380d86e22be4cfa58d11826ab8fd95a04c4eba54593b
MD5 f141cd9046f5b3c388d5439d12948260
BLAKE2b-256 eb7337a5692849f12547f95278fe83474b8d9e28d639f46ea675c406bffd5235

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 692082efc62d9071233a1ea558be0eb50e5fbf6db5103eee9c5ba8adebf33734
MD5 8f7fa9bcadb901431c03199be7cef985
BLAKE2b-256 54468adacd6d695ca2e9687740a3fdc1896afd49675642993b60fc1942288a3f

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-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.8.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 79f82fc26078a0b0503a103ecef3830885af1950470ee6467ab22530ca99f94c
MD5 e3b20c3d34f0112a3da870b47d9f5175
BLAKE2b-256 3ea395606e45c5689e614b6ac35d0858fd1d7bffac58bf240a6dfcfc42d62b61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 41a5236b0a5b7301969d3d8ed69672f274ecff40392a00f2129cc9ba707ef5ab
MD5 42f6f83a51d66922afe525ed5ecf6cc0
BLAKE2b-256 9aee0a3b915653d1d4c2589d5af57fe92ecbb0c73c9c74b743f8cc105da790e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1c11710c06e32a0b559f09d15e346153afd1501af3d5dec42df2acbdfcee9072
MD5 bee47dce270415df689f8f812f7dc7a7
BLAKE2b-256 8f270154e636ec34a76afbd9d3964d083d63f5b37c96f689669ae8450b858c32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7f21b652dc8111d51272ce342d1d248b7a61c0464aac084ea819745ac53b203b
MD5 553b442878447ae8d3f46f7363a6104f
BLAKE2b-256 ef363b211e3bc4cbf309814961b7631f4374140af40c5735b471252365d9bb02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4828d0b841107fe703bdfe9c6d26526c9e17e3e4a7c6a2853e9477148dce7f93
MD5 cd488e27749f72d531519e55f175d1ed
BLAKE2b-256 1c8f105c0b3656d7ffafdfcfb8ea93bc45481771105cabb174357e50f2747bed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.8.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 b4c57f4d6bd02785992c55b2b7db05f391ab4bd6d94da866b88fea44cd635563
MD5 aa6c4434892830a025b8f2aa7b2d7342
BLAKE2b-256 98948d9e9e3701705d1e5c6bec5c57c903cddcf8f818078713233ef4c96f04be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9c9630fbaed937df18a13b89c61754cd4600b95edef9ffb74a0f55d1d44f3d1d
MD5 70d7cb183db12dd9c8a6f1e67a2a1da6
BLAKE2b-256 67d90ecb4593af6fc7d84f7a0ba10e27f514df72a761da1f333b6ea48ccc8f39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 838198fb828bd0325b75aee0374506675c71b0a04a50b55a239463ee2b4a9c8d
MD5 4a3c9971995f39c49056ecdc9de563a3
BLAKE2b-256 865a1e04ed0d8fedb5eb8e1e9e18bd99cd0c90ab547f0deb6cc54cbf7764d0a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 461f1e5542b0f618800e25aa37bdd15d5448d16a8830bdb30bd82c6ea82501f2
MD5 0cb4a4fc391ab8aba87565992b0783cf
BLAKE2b-256 57b75aa2795c476abdd0feee1b18a5e5b1567c70bcba36f4e67bdf9e8bb9dff9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ed139cf6f0d7b75a11fd6f976710d88d06b005e39aff24989b0ab62432173c40
MD5 7f1fe7975db3ebf947822b9afed90f35
BLAKE2b-256 3d04fc261fc3af543b672cc586a077bfacb798c8abe55b5ae4d6bebf4c2b99fc

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-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.8.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a89019373e3ab96f190d801e20bccfe784a3b435dc4f68c92274990ec334dbc4
MD5 9a349b01c1dedada4ac227fb50d0dd15
BLAKE2b-256 aea1a501f656ddc4b4c003dfcfd8680144e38fa50147d1a1f08d8212c824ffbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c24b9cc934d4a6f66e9e3c04fd29afa1bafa673c36048d813cc45b871a53d998
MD5 378caf5bae4ae7416f881a8db778b0c3
BLAKE2b-256 4e3a95438d66dc925e618c28c4690ad8cc74574146e069ec1f87852c00968d8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f2181d7b039c178afd79e99bb40044d5bdd10a42dcef5df1aec3e3a8a7a8875b
MD5 5bee832be1d3b462dd3f8b0e77c11a2b
BLAKE2b-256 c2e8766d9d5faaae9dd499b662b3800625b047813c922c7355679e3f5b804cbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 35165f05fa95c41ecfde4c3fc1c0337c2a9aec1e98a8bb968f9b9c411b958f38
MD5 9ace0c27b0885d0eaef4133eeb357305
BLAKE2b-256 599304cae3eb89d38053fb447a3206ce48326693655604e7f0aff6b06a81e1fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.8.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3a77820b5f45ba43c6823d84b0f22eb4a46e9f0dba4112fe544deb06e634d50f
MD5 a550ad95fc8df159f82a1a3f761584a5
BLAKE2b-256 639bca7257528b385775a36bd1ece76279581c1b65ebd9c76ae3afd15d88fed2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.8.1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 e16bd078cf3ab793f4a1d778fa1765f8f1828d911b6fafb894b5ab55fe4b0d3f
MD5 40f4951f6651e11e8b73a50809641066
BLAKE2b-256 9b99035d6d1745dc3beab2199b57f7abfcecd2e46db02f428ffed898d66bb469

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 82681982a5d621cb0d5ac89b9dda94bc110a6aa14ee0463593273e54f51c189d
MD5 f2edfc44684f02d3f9935e1f23e95cc5
BLAKE2b-256 2885be490f112860c78efebe06617c8065ced1a90049a0802f2e7a329db89e2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 be9c97ad1fe277d18385f8bc110f498cfc6616b6fedc72acbabf9871d806ce32
MD5 bc5c5127b0a1c106f40d207a344e47ef
BLAKE2b-256 65800fb9e9c5ad81313410f27ba164265ec0d187cad3dc9ecc5ad0b1ee27f582

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b93e83b0e870ad253ea24e96af576fc6f3b22e14cd9c24c98e3e454cfb30680e
MD5 b004c284e9f25a46838b55430ef798bb
BLAKE2b-256 cd7ff717b2d1c1e50ab108c077e2839be614d3591d4ebb09efb13fee9c6849ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 72f0bcb568c7dd49d664aa2b4cbe55de7817f5f5018919fbb1c423c2876bc943
MD5 9e6eda5e3048383587aa22db25f0f112
BLAKE2b-256 44769147bbcd0f50559b7872b248b7f7a5589e461671cd506044629d90ad1017

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-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.8.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3ce5f8ebb396f47ae4669ee050af906ff1250fe10261842ae2eba336c25c43a8
MD5 faee0392aaecd0bb1210fa88b50ce088
BLAKE2b-256 141c3f29bd0c107e69bb1ddc73e3372aefdab39af477479e5ced1ea802da7082

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 222ac1922bea9c130ea4b6865312174cb81f59ea38babfc019548847ea142fba
MD5 64f9b7cc023a05973066a78ecd9c5834
BLAKE2b-256 1d052a7d8f39f226b0f86a0b9924c0bbdd4e64c2fef0ea25d25db05e897927b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 deb94ec31124a564c8aca9ac452a550fb964f63b40cf061653f66d022d53fcb6
MD5 ed38470828b2d5c032ba6bf8d646421e
BLAKE2b-256 59c8b8af5e8017fa8345968371e6eec7f4f17033a7a232b98d3bcd4caf885d64

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ecee2437cc3bb59c0bd1915bedba16cc984cf977486d24a8c1bc43bd603b1422
MD5 75d57ef9f7ad6d6c688d0f383184e511
BLAKE2b-256 6c6332fe892fd97cab5e00edc4daf50a0936135b1aaf0cc64dd6a17eefd21e88

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.8.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f96d6e1ddea1569b008b97b669abbbca16aba12ef3bdf4305f441da86bd4f8ca
MD5 056c27508a166fbecbc2f343882717c1
BLAKE2b-256 f5afb475e998a07ed302790e6413950592df2b5d4df67f854674745d15a6922a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: time_machine-2.8.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 6459f27eb9abe8a79cb83b52cb405db1b2c489746930707f6f4b8f34683d5a38
MD5 b7abe35ecf34dace93695960035c0200
BLAKE2b-256 e51f4bf3aa61a23e64dee3fb8970cb69d3ddfef03e587ad8da219cb285888644

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 083cc491decacd77ab3243fb400e9f7c6554da82b23c219c2f89a193e9aa3c46
MD5 1ecc48a8e0b49dd02fb52978bc4d45cd
BLAKE2b-256 b6f3d49ff3fe26481fe28f689700347e4f7eba45d12d085b8214b85f162b9665

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 3ec2dfe5b15cbb2f07ee615380253a002d52f171f4ec30b83cfc1d4c1ceea26c
MD5 4a53c76a79f852399d8550ad78d603a2
BLAKE2b-256 a4ed3a3a44bb779c15d062c460af5cb4e729b192a579b40d23f955cbc0d4dbfe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e573561c37313dfc8bca45314505de58c4ccec09b7f9341d4b963ee636468993
MD5 02148c47c905399327f96baa40aff946
BLAKE2b-256 8ceeadfe6eb35a43415c55ed96bc961e768b20cbbb0c9866a007a20c37973c8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dbbd3d444fc1b7bfa6de934f4174d77e9ab3e2675eef7595974cf3f3ec04baa6
MD5 ef37787826061c130cd55682009fea6a
BLAKE2b-256 de9f3c693bde2182d64cbd616dcfa0be9d914c27332bb9edc50ddc433824ddbb

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-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.8.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d5cd2eb0ac8af2b18b1aa6ae7437daf42bc04b6a37d7ce72a1c4da476deb0f93
MD5 ebc9f6aea0c0ce96bb8c71114fec3476
BLAKE2b-256 253cfd3b77077215b69ac9e93f4fae03fbeed9920577a3ef94f4b13bea8be906

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8a568c829f2ca6b6e28d606bef5e428c28598ef138a9b3cc1872da188b039a81
MD5 5cb552cdd611066b84511b8827939d47
BLAKE2b-256 a12871731c32719725b751c897a3e397e343e19cfe2f2583fa32743c474af573

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6f58954ad6cc74ee19311e80199714ff6501a64b2dd100aea187dc92f244bf88
MD5 8ef94406abd9727a7e4757f3743758b9
BLAKE2b-256 7a1d40595f49a45ac4e3c860682a13a484ddcba331247d84b1237db3d4910eca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for time_machine-2.8.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 193c51eb48f853553ba200a08fe977101e509d5b0a682d295a8709ba04731e8f
MD5 28055efeb120f9da0b8a96f2480b2997
BLAKE2b-256 bad4c1d6849c09f9e6e6c618fcbecf49e7a4a2d1c29162b025fac6cb5ed61d05

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for time_machine-2.8.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7ac6214c718b148b6fb50d6376b86f523d93187a27a4bbfb356988121c2dc4b3
MD5 85db4415f8a17aa2218f0b84e0fb81bd
BLAKE2b-256 0877b16c64a58cc3f6b33ec4567e480f3b07afbebbce39b8bd588ced9defc130

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-win32.whl.

File metadata

  • Download URL: time_machine-2.8.1-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for time_machine-2.8.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 61319bd1531356af556951c2ac2541fc58ff272fb6ea409cf2379bebc6c7b268
MD5 7042696de74ae6c14f195523f286c9d0
BLAKE2b-256 8cc297ca68481727e5daf9cd19961388b9414e8b4cdc2af2e7b5298f4b6f74c7

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 6b0cee816d67d1bb731cde89d765d3ca992a4aaf00f78a6bff379b3b26cc464d
MD5 9a42fe55cc4efbc640c56130286ff841
BLAKE2b-256 8cab364738f2cc7411a12d26455a159be5631b07d06d133f898dd1f618aa5fce

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.8.1-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 7c6c410e8048bdfbf9167445d98f27851acfdeaf31b0cd3443f42785ab88b7f2
MD5 0e945e2cb7a88c1cc577c54df7913f15
BLAKE2b-256 32ca135e95a866b5f4d0c0b61012afb14ac72af69b75f61f5006a4721dffb4ba

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c68c0d18dc23aeedfb98a9497127d14cbaa464c2fbe1cdd4afe7a15e08888f18
MD5 b9d3d48fabbc654eadd73284b84b955e
BLAKE2b-256 13b32bbc41413564dc6fa530fcd6ba3f3fd22f196c6e8eb912a77749f2d5021e

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for time_machine-2.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a8e39bf398d741c70f1a4e8e76ef7bca84291e85fcc438aaac9cc68a212a8235
MD5 3c29a754e5b81f92d839c0ba193247de
BLAKE2b-256 62aba88e1103e63787a61a9ab92670d9c15745c98c6ce666d9a71e39cd1ed99e

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-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.8.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a74f2a2d0fcb4fc23a128826e13d492323b5c7330502b417c1f8a1e0cb55a2c0
MD5 7b98f8ace474d6e5546f18f1e7bb3bc8
BLAKE2b-256 ce2075eb4e0ba5050e19d3d4751dcdd22e9ee17291cb1f9d81f2bc7c03806eb9

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for time_machine-2.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f95fb65be15384f0ce3a39c07a2a49be2fbd81a47967d051b45daf6322a6546d
MD5 e06db455e55a16561f21fcb010d899af
BLAKE2b-256 c7d13f1b9d568c35925178fe72a8a4a2dcb2cd21eb6bc3efd95aed79fe0e0756

See more details on using hashes here.

File details

Details for the file time_machine-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for time_machine-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 740116c5920775c0cd4b26f2c7bbf71f697974a69c42d51892d69cf224c38e76
MD5 ade582c5de4453b8a765fe1a59dc34c1
BLAKE2b-256 4aeeb27f8cd9e1251cd33b3ae889cb42a1bb0b5b0a7df6715d4562b96acd4a87

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