Skip to main content

Provides a high-precision thread-safe timer and helper methods to work with date and time data.

Project description

ataraxis-time

A Python library that provides a high-precision thread-safe timer and helper methods to work with date and time data.

PyPI - Version PyPI - Python Version uv Ruff type-checked: mypy PyPI - License PyPI - Status PyPI - Wheel


Detailed Description

This library uses the 'chrono' C++ library to access the fastest available system clock and use it to provide interval timing and delay functionality via a Python binding API. While the performance of the timer heavily depends on the particular system configuration and utilization, most modern CPUs should be capable of microsecond precision using this timer. Due to using a C-extension to provide interval and delay timing functionality, the library is thread- and process-safe and releases the GIL when using the appropriate delay command configuration. Additionally, the library offers a set of standalone helper functions for manipulating date and time data.


Features

  • Supports Windows, Linux, and macOS.
  • Microsecond precision on modern CPUs (~ 3 GHz+) during delay and interval timing.
  • Releases GIL during (non-blocking) delay timing even when using microsecond and nanosecond precision.
  • GPL 3 License.

Table of Contents


Dependencies

For users, all library dependencies are installed automatically by all supported installation methods (see the Installation section).

Note! Developers should see the Developers section for information on installing additional development dependencies.


Installation

Source

Note, installation from source is highly discouraged for anyone who is not an active project developer.

  1. Download this repository to the local machine using the preferred method, such as git-cloning. Use one of the stable releases that include precompiled binary and source code distribution (sdist) wheels.
  2. cd to the root directory of the project.
  3. Run python -m pip install . to install the project. Alternatively, if using a distribution with precompiled binaries, use python -m pip install WHEEL_PATH, replacing 'WHEEL_PATH' with the path to the wheel file.

pip

Use the following command to install the library using pip: pip install ataraxis-time


Usage

Precision Timer

The timer API is intentionally minimalistic to simplify class adoption and usage. It is heavily inspired by the elapsedMillis library for Teensy and Arduino microcontrollers.

All timer class functionality is realized through a fast C-extension class wrapped into the PrecisionTimer class. Primarily, the functionality comes through 3 class methods: reset(), elapsed (property), and delay():

Initialization and Configuration

The timer takes the 'precision' to use as the only initialization argument. All instances of the timer class are thread- and process-safe and do not interfere with each other.

from ataraxis_time import PrecisionTimer, TimerPrecisions
from ataraxis_base_utilities import console
console.enable()

# Currently, the timer supports 4 'precisions: 'ns' (nanoseconds), 'us' (microseconds), 'ms' (milliseconds), and
# 's' seconds. All precisions are defined in the TimerPrecisions enumeration.
timer = PrecisionTimer(TimerPrecisions.MICROSECOND)
console.echo(f"Precision: {timer.precision}")

# The precision can be adjusted after initialization if needed. While not recommended, it is possible to provide the
# precision as a string instead of using the TimerPrecisions enumeration.
timer.set_precision('ms')  # Switches timer precision to milliseconds
console.echo(f"Precision: {timer.precision}")

Interval Timing

Interval timing functionality is realized through two methods: reset() and elapsed. This functionality of the class is identical to using perf_counter_ns() from the 'time' library. The main difference from the 'time' library is that the PrecisionTimer uses a slightly different interface (reset / elapsed) and automatically converts the output to the desired precision.

from ataraxis_time import PrecisionTimer
import time as tm
from ataraxis_base_utilities import console

timer = PrecisionTimer('us')
console.enable()

# Interval timing example
timer.reset()  # Resets (re-bases) the timer
tm.sleep(1)  # Simulates work (for 1 second)
console.echo(f'Work time: {timer.elapsed} us')

Delay

Delay timing functionality is the primary advantage of this library over the standard 'time' library. At the time of writing, the 'time' library can provide nanosecond-precise delays via a 'busywait' perf_counter_ns() function that does not release the GIL. Alternatively, it can release the GIL via the sleep() function, but it is only accurate up to millisecond precision. PrecisionTimer class can delay for time-periods within microsecond precision, while releasing or holding the GIL.

import threading
import time
from ataraxis_time import PrecisionTimer
from ataraxis_base_utilities import console

# Instantiates a global counter for the background thread
counter = 0
stop = False


def count_in_background():
    """Background thread that increments the global counter."""
    global counter
    while not stop:
        counter += 1


# Setup
timer = PrecisionTimer('us')
console.enable()

# Starts the background counter thread
thread = threading.Thread(target=count_in_background, daemon=True)
thread.start()
time.sleep(0.1)

# GIL-releasing microsecond delay:
console.echo("block=False (releases GIL):")
counter = 0  # Resets the counter
timer.delay(100, block=False)  # 100us delay
non_blocking_count = counter
console.echo(f"counter = {counter}")

# Non-GIL-releasing microsecond delay:
console.echo("block=True (holds GIL):")
counter = 0  # Resets the counter
timer.delay(100, block=True)  # 100us delay
blocking_count = counter
console.echo(f"counter = {counter}")

# Cleanup
stop = True

# With microsecond precisions, blocking runtime often results in the counter not being incremented at all.
if blocking_count == 0:
    blocking_count = 1
console.echo(f"Difference: block=False allows ~{non_blocking_count/blocking_count:.0f}x more counting!")
thread.join()

Date & Time Helper Functions

These are minor helper functions that are not directly part of the timer class showcased above. Since these functions are not intended for realtime applications, they are implemented entirely in Python.

Convert Time

This helper function performs time-conversions, rounding to 3 Significant Figures for the chosen precision, and works with time-scales from nanoseconds to days.

from ataraxis_time import convert_time, TimeUnits
from ataraxis_base_utilities import console
console.enable()

# The conversion works for Python and NumPy scalars. Use the TimeUnits enumeration to specify input and
# output units. Note, by default, the method returns the converted data as NumPy 64-bit floating scalars.
initial_time = 12
time_in_seconds = convert_time(time=initial_time, from_units=TimeUnits.DAY, to_units=TimeUnits.SECOND)
console.echo(f"12 days is {time_in_seconds} seconds.")

# While discouraged, it is possible to provide the units directly, instead of using the TimeUnits enumeration. Also,
# it is possible to instruct the function to return Python floats.
initial_time = 5
time_in_seconds = convert_time(time=initial_time, from_units="s", to_units="m", as_float=True)
console.echo(f"5 seconds is {time_in_seconds} minutes.")

Timestamps

Timestamp methods are used to generate and work with microsecond-precise UTC timestamps. They work by connecting to one of the global time-servers and getting the current timestamp for the UTC timezone. The generated timestamp can be returned as and freely converted between the three supported formats: string, bytes’ array, and an integer number of microseconds elapsed since the UTC epoch onset.

from ataraxis_time import get_timestamp, convert_timestamp, TimestampFormats
from ataraxis_base_utilities import console

console.enable()

# Gets the current date and time and uses it to generate a timestamp that can be used in file-names (for example).
# The timestamp is precise up to microseconds. Use TimestampFormats to specify the desired format.
dt = get_timestamp(time_separator='-', output_format=TimestampFormats.STRING)
console.echo(f"Current timestamp: {dt}.")

# The function also supports giving the timestamp as a serialized array of bytes. This is helpful when it is used as
# part of a serialized communication protocol.
bytes_dt = get_timestamp(output_format=TimestampFormats.BYTES)
console.echo(f"Byte-serialized current timestamp value: {bytes_dt}.")

# Use the convert_timestamp() function to convert the timestamp to a different format. It supports cross-converting
# all timestamp formats stored in the TimestampFormats enumeration.
integer_dt = convert_timestamp(timestamp=bytes_dt, output_format=TimestampFormats.INTEGER)
string_dt = convert_timestamp(timestamp=integer_dt, output_format=TimestampFormats.STRING)
console.echo(
    f"The timestamp can be read as a string: {string_dt}. It can also be read as the number of microseconds elapsed "
    f"since UTC epoch onset: {integer_dt}."
)

API Documentation

See the API documentation for the detailed description of the methods and classes exposed by the components of this library. Note, the documentation also covers the C++ source code and the axt-benchmark Command-Line-Interface (CLI) command.


Developers

This section provides installation, dependency, and build-system instructions for project developers.

Installing the Project

Note! This installation method requires mamba version 2.3.2 or above.

  1. Download this repository to the local machine using the preferred method, such as git-cloning.
  2. cd to the root project directory.
  3. Install core Sun lab development dependencies into the base mamba environment via the mamba install tox uv tox-uv command.
  4. Use the tox -e create command to create the project-specific development environment followed by tox -e install command to install the project into that environment as a library.

Additional Dependencies

In addition to installing the project and all user dependencies, install the following dependencies:

  1. Python distributions, one for each version supported by the developed project. Currently, this library supports the three latest stable versions. It is recommended to use a tool like pyenv to install and manage the required versions.
  2. Doxygen, if you want to generate C++ code documentation.
  3. An appropriate build tool or Docker, if you intend to build binary wheels via cibuildwheel. See the link for information on which dependencies to install for each development platform.

Development Automation

This project comes with a fully configured set of automation pipelines implemented using tox. Check the tox.ini file for details about the available pipelines and their implementation. Alternatively, call tox list from the root directory of the project to see the list of available tasks.

Note! All pull requests for this project have to successfully complete the tox task before being merged. To expedite the task’s runtime, use the tox --parallel command to run some tasks in-parallel.

Automation Troubleshooting

Many packages used in 'tox' automation pipelines (uv, mypy, ruff) and 'tox' itself may experience runtime failures. In most cases, this is related to their caching behavior. If an unintelligible error is encountered with any of the automation components, deleting the corresponding .cache (.tox, .ruff_cache, .mypy_cache, etc.) manually or via a CLI command typically solves the issue.


Versioning

This project uses semantic versioning. For the versions available, see the tags on this repository.


Authors


License

This project is licensed under the GPL3 License: see the LICENSE file for details.


Acknowledgments

  • All Sun Lab members for providing the inspiration and comments during the development of this library.
  • elapsedMillis project for providing the inspiration for the API and the functionality of the timer class.
  • nanobind project for providing a fast and convenient way of binding C++ code to Python projects.
  • The creators of all other dependencies and projects listed in the pyproject.toml file.

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

ataraxis_time-4.0.0.tar.gz (66.4 kB view details)

Uploaded Source

Built Distributions

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

ataraxis_time-4.0.0-cp313-cp313-win_arm64.whl (80.0 kB view details)

Uploaded CPython 3.13Windows ARM64

ataraxis_time-4.0.0-cp313-cp313-win_amd64.whl (86.0 kB view details)

Uploaded CPython 3.13Windows x86-64

ataraxis_time-4.0.0-cp313-cp313-win32.whl (83.0 kB view details)

Uploaded CPython 3.13Windows x86

ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_x86_64.whl (550.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_i686.whl (598.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_aarch64.whl (529.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

ataraxis_time-4.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (92.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

ataraxis_time-4.0.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl (93.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ i686manylinux: glibc 2.28+ i686

ataraxis_time-4.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (89.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

ataraxis_time-4.0.0-cp313-cp313-macosx_15_0_x86_64.whl (82.2 kB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

ataraxis_time-4.0.0-cp313-cp313-macosx_15_0_arm64.whl (79.2 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

ataraxis_time-4.0.0-cp312-cp312-win_arm64.whl (80.0 kB view details)

Uploaded CPython 3.12Windows ARM64

ataraxis_time-4.0.0-cp312-cp312-win_amd64.whl (86.0 kB view details)

Uploaded CPython 3.12Windows x86-64

ataraxis_time-4.0.0-cp312-cp312-win32.whl (83.0 kB view details)

Uploaded CPython 3.12Windows x86

ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_x86_64.whl (550.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_i686.whl (598.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_aarch64.whl (529.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

ataraxis_time-4.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (92.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

ataraxis_time-4.0.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl (93.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ i686manylinux: glibc 2.28+ i686

ataraxis_time-4.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (89.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

ataraxis_time-4.0.0-cp312-cp312-macosx_15_0_x86_64.whl (82.2 kB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

ataraxis_time-4.0.0-cp312-cp312-macosx_15_0_arm64.whl (79.2 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

ataraxis_time-4.0.0-cp311-cp311-win_arm64.whl (81.6 kB view details)

Uploaded CPython 3.11Windows ARM64

ataraxis_time-4.0.0-cp311-cp311-win_amd64.whl (88.0 kB view details)

Uploaded CPython 3.11Windows x86-64

ataraxis_time-4.0.0-cp311-cp311-win32.whl (84.6 kB view details)

Uploaded CPython 3.11Windows x86

ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_x86_64.whl (554.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_i686.whl (600.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_aarch64.whl (533.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

ataraxis_time-4.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (95.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

ataraxis_time-4.0.0-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl (95.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ i686manylinux: glibc 2.28+ i686

ataraxis_time-4.0.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (92.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

ataraxis_time-4.0.0-cp311-cp311-macosx_15_0_x86_64.whl (84.0 kB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

ataraxis_time-4.0.0-cp311-cp311-macosx_15_0_arm64.whl (80.9 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

ataraxis_time-4.0.0-cp311-abi3-macosx_15_0_arm64.whl (78.8 kB view details)

Uploaded CPython 3.11+macOS 15.0+ ARM64

File details

Details for the file ataraxis_time-4.0.0.tar.gz.

File metadata

  • Download URL: ataraxis_time-4.0.0.tar.gz
  • Upload date:
  • Size: 66.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ataraxis_time-4.0.0.tar.gz
Algorithm Hash digest
SHA256 7d8fbc5f6fc5c87694f6ce03e1ae23b6674226124d7f47d229f078fec9f79eca
MD5 64be211f16be3f5b65915f1687d83793
BLAKE2b-256 1372dbdae291b9956c6b01c023fb09453ed208ac8d9ab77ce5585eee64db99ed

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 0eece65d3f955cc653e33d57d74f00ddf2e1453b81b0e4d329907b7d3d025cb4
MD5 b32771ed71eb6a695c301b42802cb6aa
BLAKE2b-256 800dbe74ec2414c058ef1c6dbd5f211469591aa820f68e7678fe98ef86cad12d

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 119d23d5f79c1146faa4786174f4a12d5c4e73bd3314c872b4207c48e51e38da
MD5 8d763136a5bc9ecaa702f60dc9305417
BLAKE2b-256 779b6c36b5cf9eeee28a69fb880594b758fa854ea720ba11617ca8c35f0e25e5

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: ataraxis_time-4.0.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 83.0 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 13dd845ae271fdb89085ec4b5ba2e5e61ab2734afaf6246136aea3fe7e5e526c
MD5 1fac2a8f3786e2378f40725025e0e044
BLAKE2b-256 f93840d8e7ffddabe9c173f7c484310a201521ade9d6ea55c1fd07d14b3a8782

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 91c834cd3d2e2ed249754323e00e76eaabfda3b84f4afd00587f182be803cba7
MD5 fbf48ac72aeeef45517f5399d8cdf92d
BLAKE2b-256 00daaa2c4a8586319108813728f8c6f732ef954344fa4b081c57523fb1a98a82

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 067720eacfcaec79e46636cbc73d9bf94add2ec3793cd8cf28b89f8be3b31962
MD5 984294ba756758b3ebd1886b71c12a3d
BLAKE2b-256 e99e0014e583319252092428cbac4d9f55a805b5481a2fcec8ad1a54ccb22d59

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9b185a75ed0f964e735532fcbc6e5454d79e824283605229b18018cd639368d4
MD5 8b4e422e99fdeccce32391c4060e09d6
BLAKE2b-256 5882637a611462f10bdd0d6bace20713dad8e2796e2e1576ab811e37856a540a

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 79cd0330fc0d79b816775c3ad378deacc3a6fcd5ce709af61dd21593b5fae2d5
MD5 795ed3b4a6260f4d537586c96a3d3364
BLAKE2b-256 2f047ae056899a3622507fe05f55822fe81172bc78cda285ee18d0b3ac1c45d2

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 ed2030701966bc509af1f0592e057ece4f6423dc82c32972e009737944c9706b
MD5 9d4362b6bda0b402e59871ab7113e2c6
BLAKE2b-256 84b3dbadfd91d5ac5ccf1639c9a4327452cdf00d379fc6f49fd261eb8f1e83eb

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b677fb9996f01843070e1594a0cbfbd14946b2332c0916c0ec16a4a59022ba77
MD5 d0b718ffe15cfc898a9d5bd341954302
BLAKE2b-256 2b3a1b4af9358e417ca4bae07a6a211ba2307b9022f8df058e5e3b1d36b3cb7f

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 7190d2516394d4a4aaaa35577ec69c72493b17e2cd2861a4699b863e417d1430
MD5 13099983a90aa71c60937d3f59c33356
BLAKE2b-256 dea616704f2fa3573f69cb2c4bdb6218f45410f3e8bdaa51a300bb9f01a1de34

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4837f44828e693ed954f58f27f19549acb71525fcbf70ebe075abe3ab0761432
MD5 1cf8362c176e446409bb49659335203e
BLAKE2b-256 29d4b8f371533997babd9e913d91c7accd3433a46b431a0e506157f3c19be573

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 5fff5f0aee399fb45eb7ac859f86d4a24d054b47ecae1d7f7dcbbb8bebba954b
MD5 da52ac192ced6f7d97d701309cd6b63b
BLAKE2b-256 cb66e82f83d7e252b11d1a9d451dc81d39a6144b2ae6077d74adc548e7f964f3

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e4c4e38ff413b0cb21e5e805e29ea74f52e77d8a9ebb45c4c8addd9bdccc72c0
MD5 f3231bd5c7a9b5f348ae0e3da6fc6c00
BLAKE2b-256 f3948b809e3d024904ef4896f9c3aba82973850a94021f271df5c22bc2a71780

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: ataraxis_time-4.0.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 83.0 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 e32c24be21f96bd629ee88d1759fb7fe257ac60dcef52d96de8bd9760f4a2de9
MD5 397c01ce1d2d947356ff352345305bda
BLAKE2b-256 ca47e63d5b98327a9c09788866a2ad4e13b4a03f74d60d55401be4cc5a14784b

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ce81c0ffbebd83705a1579680ecba33e0239b1b183272b54ce7d51e8855e3268
MD5 b3b390741a27527fa10429837ccc2c3d
BLAKE2b-256 ebdeffd84131be493f4017df6a90ac0719f79728d0a594f486125da23b6e392d

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 bd8221816068a7dc08e60592c811b8ac57f436035351548a5db2645aa351136a
MD5 7b3cc051e64d56a9f0b3f1bc2bfaf7bd
BLAKE2b-256 86de095d12fc6197090e8fca65645961b9da48a786cc07dd9a91ca7dd5edafa5

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2412c42efa948f053d3380e17dd7b0f607309ce89ad9bae5da803721107cdd2e
MD5 0e0481a85aabda3bb7af95d063de1d42
BLAKE2b-256 5f32b6721b5962951880ab058613d46f673182213a0435864d85be3434a3df16

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 561f311061892e3b034db992fb9c82b162250438d0c28e9af582cda2d60617c0
MD5 35d206599f6c1648dada5513e8dbc3ff
BLAKE2b-256 55d4ef952744f488ada66808a3caf869ed6763bf73dc21a46eac9089523023a1

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 e3bc9049e1903c70db7993e9afc63a01ced7aaf85be574a7a30ab5e66b666cc6
MD5 c194222dc0b30d56b4c129fd972cfc61
BLAKE2b-256 0cde9915b807c52845f9e180c8e01ab305b9aec6f25ae19467047a5f9a666f23

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 24efa274bebe3d035231cdf63b1c688cc3de343667a5fa04b98e7c377f6e471b
MD5 5abbcfb54acbfa23e56343ebe8e9ddb0
BLAKE2b-256 02b9ba5307ef0b97077cb5d93e73494717719baa2a9e5521282b31589424f0ca

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 03f4cbb8ab2a95807d3f2f2ca3f962c99737a55ee1322f96e2ce4d72d267aa9a
MD5 313bffc19d5c2622e8c8549a46eb3786
BLAKE2b-256 428c22c214e4ddd3c926bc31e45b316f0bdd682a9128816e13fa10f726703fb0

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 991605c9a0c2c83a055c2c9594449b15133563db2f96529a6dd97acc79e8a92f
MD5 0ceed74383cafc4e1735bb36299ab230
BLAKE2b-256 dbb28869d4655a4727495e9249caf04ef07d9d7629d73eeafa4768f0fae4580b

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 45b1240c178a613bfe8171aba8edbfc2db48a62abf90574eabda4b5678d15e78
MD5 99095a8145e77166d58a926cf0b9e95b
BLAKE2b-256 d0bf4ce8e8391a52cadff3a8b847e584555246569dc12cc99b06c25765aaa17d

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ea5637f36b5a15e2deb51975c248ba22f1e13039186de1fb6af1e9d59a47ccd2
MD5 9264d870c0cde0d17da059926eaa2f1f
BLAKE2b-256 d12e89e884add92cc223c30515803451bf7f2c6df709e0051c21796551f6ea53

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: ataraxis_time-4.0.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 84.6 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 123e759b6eef9eb4f2f57ace0b78ab00ed0562b88cd359da8617df76d86ca631
MD5 9381296e4364041e8a9f2a8fb17a5aea
BLAKE2b-256 a82eecff4170bab17b8ab36e51ea7895ac55bc4da554b0852d0c1afde8562a71

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3fde10cf4c025555c495417bd160d89c88eb1fbc795d4b4f68483398c108f318
MD5 3ed3749255cacd0aab11ce7c5d819916
BLAKE2b-256 1d8dfa35638e189dc0db192e79d2181c6d50b0054a1efdf2398cd3fdbf9944a2

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4ba5d9733e20adefa3f82926105947f9640674df2a9057775d4aeb8d3ba23079
MD5 713a3b3220169c878ed2774fb24f9618
BLAKE2b-256 e015b181a206802fb16c6d293adcd6f6d545fb0161bfafa8aecff3bdacdd2a58

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 90e523c6fa783cfed640de30172515e5f56b6dfd791017143ff25abe81c0954d
MD5 c1f7a46a57bc103ece6299924681f79c
BLAKE2b-256 38cda3f98a7bae75144269d134e9b9f35d120d4d2e6396e98b4c4cf809126101

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b3fb28062de4dbc0dc6b6a83452d2734337978654418703d1c288b74e7f8f495
MD5 dccc0b91c7ec6a99e462ada63207d307
BLAKE2b-256 72e391e8a4546aaf00c4d99aa3f5c24b604b3131ce11016432879deb42df6629

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 4c74a4a89be1269a91ae4ea2100b3fb3ba5b303915ca6f060410d4bd4d1e2bf8
MD5 9c0f74b1682cb8728aef0064ec78234e
BLAKE2b-256 35358790604c1b3f90637e2630a1f4e17c11917a7935ed47f672bf42e03d5746

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 10e6c6a78d42307ea350d0db31eac621cdf8bcdb2378a901345054b27ef07eed
MD5 1ebfb3c71c1c2a3b7d309185325c8a0f
BLAKE2b-256 f14a781be1767693c08864cb392748279cbda6c427f7139a8ac5b604a20bc486

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 4ad66efb19ba2a0c1b38fc43921e831f89c87ddac86ee8df892879bbbc1452ad
MD5 5e5626b7494b6b0c26d0b472702a8924
BLAKE2b-256 ed2e79bf7546e3b512b414dc2418a810a85116debec1565881986bb5e5efe931

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 39c4ffc2887149f84e3da969630cb08bbee940470e3e9fe34ef34daad4438e38
MD5 89df11fefc4d8c229ada40e314e8b70a
BLAKE2b-256 ece28814c422a1e81d58375fef59f29efbe0f3b948f546c800b2b91606510cfc

See more details on using hashes here.

File details

Details for the file ataraxis_time-4.0.0-cp311-abi3-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-4.0.0-cp311-abi3-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c2dada7d82664111893faa604c74892ef072bcd011fa0c3187fd32ab4d801c36
MD5 7bcfe83071482631e0fecb6d3f4e58e2
BLAKE2b-256 c5ba15d67c11991329bccdd1e08d334c573c1e55e6eda467c6c937682e2f1dfe

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