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. If the downloaded distribution is stored as a compressed archive, unpack it using the appropriate decompression tool.
  3. cd to the root directory of the prepared project distribution.
  4. 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. Currently, all Sun lab automation pipelines require that mamba is installed through the miniforge3 installer.

  1. Download this repository to the local machine using the preferred method, such as git-cloning.
  2. If the downloaded distribution is stored as a compressed archive, unpack it using the appropriate decompression tool.
  3. cd to the root directory of the prepared project distribution.
  4. Install the core Sun lab development dependencies into the base mamba environment via the mamba install tox uv tox-uv command.
  5. 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. See the tags on this repository for the available project releases.


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-5.0.0.tar.gz (65.9 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-5.0.0-cp314-cp314-win_arm64.whl (81.1 kB view details)

Uploaded CPython 3.14Windows ARM64

ataraxis_time-5.0.0-cp314-cp314-win_amd64.whl (86.6 kB view details)

Uploaded CPython 3.14Windows x86-64

ataraxis_time-5.0.0-cp314-cp314-win32.whl (83.3 kB view details)

Uploaded CPython 3.14Windows x86

ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_x86_64.whl (550.9 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_i686.whl (597.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_aarch64.whl (530.1 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

ataraxis_time-5.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (93.0 kB view details)

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

ataraxis_time-5.0.0-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl (93.0 kB view details)

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

ataraxis_time-5.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (88.9 kB view details)

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

ataraxis_time-5.0.0-cp314-cp314-macosx_15_0_x86_64.whl (81.1 kB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

ataraxis_time-5.0.0-cp314-cp314-macosx_15_0_arm64.whl (77.8 kB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

ataraxis_time-5.0.0-cp313-cp313-win_arm64.whl (79.6 kB view details)

Uploaded CPython 3.13Windows ARM64

ataraxis_time-5.0.0-cp313-cp313-win_amd64.whl (85.0 kB view details)

Uploaded CPython 3.13Windows x86-64

ataraxis_time-5.0.0-cp313-cp313-win32.whl (81.9 kB view details)

Uploaded CPython 3.13Windows x86

ataraxis_time-5.0.0-cp313-cp313-musllinux_1_2_x86_64.whl (550.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

ataraxis_time-5.0.0-cp313-cp313-musllinux_1_2_i686.whl (597.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

ataraxis_time-5.0.0-cp313-cp313-musllinux_1_2_aarch64.whl (530.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

ataraxis_time-5.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (93.0 kB view details)

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

ataraxis_time-5.0.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl (93.0 kB view details)

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

ataraxis_time-5.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (88.7 kB view details)

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

ataraxis_time-5.0.0-cp313-cp313-macosx_15_0_x86_64.whl (81.0 kB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

ataraxis_time-5.0.0-cp313-cp313-macosx_15_0_arm64.whl (77.8 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

ataraxis_time-5.0.0-cp312-cp312-win_arm64.whl (79.6 kB view details)

Uploaded CPython 3.12Windows ARM64

ataraxis_time-5.0.0-cp312-cp312-win_amd64.whl (85.1 kB view details)

Uploaded CPython 3.12Windows x86-64

ataraxis_time-5.0.0-cp312-cp312-win32.whl (82.0 kB view details)

Uploaded CPython 3.12Windows x86

ataraxis_time-5.0.0-cp312-cp312-musllinux_1_2_x86_64.whl (550.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

ataraxis_time-5.0.0-cp312-cp312-musllinux_1_2_i686.whl (597.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

ataraxis_time-5.0.0-cp312-cp312-musllinux_1_2_aarch64.whl (529.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

ataraxis_time-5.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (93.0 kB view details)

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

ataraxis_time-5.0.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl (93.0 kB view details)

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

ataraxis_time-5.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (88.8 kB view details)

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

ataraxis_time-5.0.0-cp312-cp312-macosx_15_0_x86_64.whl (81.1 kB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

ataraxis_time-5.0.0-cp312-cp312-macosx_15_0_arm64.whl (77.9 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for ataraxis_time-5.0.0.tar.gz
Algorithm Hash digest
SHA256 70dcbe55455ef3dafe341e01fd5fe48de5e63e1ad78c5ca30eb9561e402b1b52
MD5 efa10198b9084cf2359fb8a92717e6a7
BLAKE2b-256 357facb0da389f474713140b0a64c76212ab0e686fd41228314ce6b38d59713a

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-win_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 3f26b2da291c03ffb749a968ccf15538e0dc6217060dfb6a0c5648b13e83e4a9
MD5 8d055c75a91a53d25f19b22664c58e7c
BLAKE2b-256 314f7e24d330b653928925117d30aca55ed5ba499534d6bb377e2293e0286d3b

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 6a758b290e38f039a5aefa6889bc7cf5f42a8b600a20ff480c395b7a9f111ebb
MD5 629c19212eb442e7085a1c9f11448d1f
BLAKE2b-256 e94af6bb6b570d58236d0695c88d9b5ee8d4a332b623ca24de9c9075d5afd8de

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-win32.whl.

File metadata

  • Download URL: ataraxis_time-5.0.0-cp314-cp314-win32.whl
  • Upload date:
  • Size: 83.3 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 b6e2a096602378f4e21126d6600d2b438c7c351b372f5959b78d9ebf8c4ec266
MD5 a7b158040cbedc00e264e368476e05b1
BLAKE2b-256 779e43a51b09412368eb9cff6cb0b431bb97ea98da3b452fb67323b7d2ab18e7

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ec5c596850710dccd928daa115cb3fec828e7deb84bf7b395e7537193bd62294
MD5 8890f04656742b9938454fb22fc776c5
BLAKE2b-256 4cc7933c3c2e4a8bdd863061c64c513ebcc6ed9a160facebf2ca1e4c44ffcb82

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 29e69a64f5fbda127516fa0bacd7007e7d15fd95ac582d1a5a6a9d30480a3ad2
MD5 90a584e4d70c1cab58b20cf439def0a6
BLAKE2b-256 6046504c2e00098642d1f4a9f1e3215969308007907994f8cb477be21bc72022

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 385735c1ac18b9e74b787d23c73ff17fcbe0f52b68d4a7df7d3164d5f9e0b5fc
MD5 531ecf0e56b1d7b07d1eb4962347ca59
BLAKE2b-256 6276fc1e4648c6c3f40425d6a92e67482f42c2588e6d5c42204adee39d592030

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 66de5671014370d661c704198b345858c99bf6eafacd83f78b9a69fdc7b23efb
MD5 b6f2e36dbf8c2d01cf04f1605c40f170
BLAKE2b-256 716b1a73c23417c6ab7826cbc1fa5745ec969eca48e6bb193406fd6ca42f68a4

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 fb957cc5c5360495109df8f49b231959e603950518322230ca060875c0173344
MD5 eb66e9f666479b6ad1e3e0ab5f4fa12b
BLAKE2b-256 648bcd7aee4a28d16882c8e3d1b7159908e72a142671c1963ef52d55b3051dfa

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 032ff1195026753bc169e9481755b74ffb5b9198fae5acc54c9406706c4dc5eb
MD5 0129e5efdb422d6ac6eef8c9eab801c1
BLAKE2b-256 4ba27c2164be87e23a59ff62d2fa93048e1fd41c0cb6517c4317910a327816a3

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 a7a70e78ef66bba1fbfc720d87afb550523e32a1a5e72bce39d82d8df7a0f75a
MD5 ecd80896c2f29b79c4529ab7be651070
BLAKE2b-256 b8113bad43871707b41da58df9a2f69100ed04ae21e769551a1ef8b0c5260f12

See more details on using hashes here.

File details

Details for the file ataraxis_time-5.0.0-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3e2f2f00d54a43b2967dc60eecd642e9784596de51112cc6a56738c46c0b6a3c
MD5 39217f6235899fd7c40811f590a9270e
BLAKE2b-256 16440dbb687d2099a5a6691ee4351718e75a874595cb132088624d1c7225b848

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 6ce9b9141b094455fc7bf9fa18874e171bce4db56254bb0e86c480dda212e5ad
MD5 f8e8ec274db521d3fada60bef428a3f4
BLAKE2b-256 d96745c1b23550a1feea11045777ac25bf98ae6c64b1ffd12164bd617dc2da5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 298201572e22deb71776fc12ea2470567bace7df76b5d03bb540ef5ed06e3507
MD5 dccc735ad09f60437c3e7a3521d466be
BLAKE2b-256 a5e68f0adadb79e12313135f2311fb9544ff32c2c227e6d5972de4c8c651b87b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 ba9e04bff7b52ea0895fec67c3799b9a86bfbe098a077ed177f3e73c8f7c4707
MD5 4f7b166a10564e0284a3a0a9321729d1
BLAKE2b-256 6cb448f166e34e4c5dcb11f0048704e839599f5bf00b9a8f975b632f411c98d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9f5ee5e6bdf82b224d01953fc16664cdb81ed571601d49a3df4f12feb5c13958
MD5 1f4ea1975509949ed559a6a1ff1fdc87
BLAKE2b-256 64300f1d29c6d76eb6e4234ab8c502b605aa209f1dbb77d19fa988cc35997217

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f10bad8cc753acdd7a2129324abfc8793779461f622b715a80d7a1da8f734888
MD5 7effb8836dbb9a0ba3d543c28e68ab59
BLAKE2b-256 4eab027446bd1c14ba357761d72a9c467a814971dd0cbf30701a498e6c2e5eec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fbea59c12b0c89966fce06f6c071cb3ed66741e2ea34ff1fac1425f7b9948ce3
MD5 3f21ac25ab355abd3d105516201f19bc
BLAKE2b-256 1ebc7d118891f40cffafe399d3f15f04f2ca0d356e43b62ed3047b65073db86e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a90fc81e1de6e3d0a87a37dae1caf1a535fa92052c77dcda8481aa7d324f92a
MD5 72b5794e8d3b6cb7f60051e76ebd4db1
BLAKE2b-256 289591048a2f3acb9c01f5d4e6404a2afacc7455bf8d8a50a6e31202f8c654de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 bcd1fa30281f49cff5815b1d93c738f95f99e1627ceba6ba1892e8b3a2b643bc
MD5 afee3cd19815547661ac9e13b57dbeaa
BLAKE2b-256 ae12a5b1c8dc6bbf223555fb64736349cd8bfe59f93f0418309777873373c5f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 edf4b009bb66b9e1d4312f0531b7fd754d0cd5bfb3a5946e68dd91f721423548
MD5 f1b1bfee72f421b4bd73cc2124a0c3a5
BLAKE2b-256 fbd4358f9faa335f1f35940f722dd908fd6a8afa9b691759c9ced71809e075dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 57ae4bca3efbbdcf82d5ca46a293e4dd1619f355ede54f7b051528433bfa15d6
MD5 7d02a4c029f63251b9f8c49b844fa41d
BLAKE2b-256 fac165d13907135e50710e41cc9d9558418deb8675c69529b9ee777dcb8d9cdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 820b1fe1d7ad9baa6cdbf5d0de7ae333b534bcc19d6b089e8ff8db04febb1994
MD5 74dab3dc6955a26256ff73563cfc13c8
BLAKE2b-256 97d43a4cfe581743b3e3c06253738471c01b6a510257b6d9816eecf9475f93b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 eaee1aaca19d9f5f8e4a733cae93335e01836c9752171d682119dfb5fce470fb
MD5 f7d5d313963852de4b234beeb42d5a6f
BLAKE2b-256 761137fc78bbb47cbacae71738964f2ea74c330b56c5167f044147095ad83367

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8eb1a72698df53f6518552193e7499aa1146423f8497a1be19b622ef0f7b85d7
MD5 f6694048d2ac197386bfdb78f43c69b9
BLAKE2b-256 0cc962a75bca74639d330102e1e4e546ef64c71d2eae89fd2f5df6e18c7138b8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 3e3221685ce4717161f2806d3ec8afa59b0f3ae505b8d5d197a8bce4fa2edbcb
MD5 9b8e7dfb5225cec41f2bc9ea0ae19883
BLAKE2b-256 7e4e134be85e810f693134fd2e6fb6f1821b922638122afc101245f633e00312

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 67a230f7c0e029b6bd2b296019a65f375bd8389a55143bb4afffc2d113207ffd
MD5 a54b4a9d058b875ec626c670406e0f45
BLAKE2b-256 a2f266f06c719373a40db6aafce0e75f280af7a7200cb664d44aba0f014da3d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9cb2da69a380d593c170d00b7a73c2ca01ebff00b895decc999f4d003b4df3a8
MD5 45086d0f3af28d78af60210cc8c45f3d
BLAKE2b-256 008eac1589759669b966defdd2e72108497e40745d2e3450531453a345a6d429

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4a6bcf3729b7cef8e5319515f0b43017d9ec14cdf48ce00b2b545ffe75a1a0ec
MD5 e99eabaccc8ce2f0f3162e52c7c6d9ff
BLAKE2b-256 c40afc90c51d47ee409d97ad2efd32753fdcad3a2a3b8e40b923785295c8dd1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6df831f66b01544af7dcd45742dcd7c378bdf924579a7d78cce84db1fc3a70f4
MD5 bbf0e6b5cc5bef72d01050b088db2beb
BLAKE2b-256 d79e56daf549867128a583750b920fb992cc1158b8ed6c6d6e1091c90f9f66fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 a0c6090c222f5db9750b644ed72d9e81b45461bb5ad435ada0f9bf5c8eecb30a
MD5 32d01fdc411ba54f8fe5be75417efefa
BLAKE2b-256 b93623dfee1bd84d11e8836f9fb5aceb2f1757138acd1a533e15bb30f6b4e5ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cd76c917842e1ef07c1b9d72eb1e6e370ac66c8f284bf1f2a5189827765b95fa
MD5 68f288bfedad0598d316bf941de064ee
BLAKE2b-256 79a12cb625326ae4187ae0a5dcf211fa98bbb4c5fe0a1fc93313a9cac6d87a3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 578df6ca524541c75539c2fa920bd26c5dea99be659440e891dc9fd78be45cad
MD5 916c888036932bed1ddd1cc28efc7266
BLAKE2b-256 d25bb64010a20cf38edd1f33954d9182271b7b8d128b387a22a63c4a4db661b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-5.0.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 0b835c5c133b349d6d181f3c7687097b1943d73f7c756131206afdbbd477748e
MD5 faa79bbac0467e52ed85a09a38cbaa24
BLAKE2b-256 590331e2d7a3c1056413b866a163a6db545f3687ed9c4dab76b35b87b9c51dee

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