Skip to main content

Provides a sub-microsecond-precise thread-safe timer and helper methods to work with date and time data.

Project description

ataraxis-time

A Python library that provides a sub-microsecond-precise 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 sub-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. Additionally, the library offers a set of standalone helper functions that can be used to manipulate date and time data.

While the library was written to integrate with other Sun Lab projects, it can be used as a standalone library for non-lab projects with no additional modification.


Features

  • Supports Windows, Linux, and OSx.
  • Sub-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.
  • Pure-python API.
  • Fast C++ core with direct extension API access via nanobind.
  • GPL 3 License.

Table of Contents


Dependencies

For users, all library dependencies are installed automatically for all supported installation methods (see Installation section). For developers, see the Developers section for information on installing additional development dependencies.


Installation

Source

Note. Building from source may require additional build components to be available to compile the C++ portion of the library. It is highly recommended to install from PIP or CONDA instead.

  1. Download this repository to your local machine using your preferred method, such as git-cloning. Optionally, use one of the stable releases that include precompiled binary wheels in addition to source code.
  2. cd to the root directory of the project using your command line interface of choice.
  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.
  4. Optionally, run the timer benchmark using benchmark-timer command from your command line interface (no need to use 'python' directive). You can use benchmark-timer --help command to see the list of additional configuration parameters that can be used to customize the benchmark behavior.

PIP

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

Conda / Mamba

Note. Due to conda-forge contributing process being more nuanced than pip uploads, conda versions may lag behind pip and source code distributions.

Use the following command to install the library using Conda or Mamba: conda 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 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. The precision of the timer can be adjusted after initialization if needed, which is more efficient than re-initializing the timer.

from ataraxis_time import PrecisionTimer

# Currently, the timer supports 4 'precisions: 'ns' (nanoseconds), 'us' (microseconds), 'ms' (milliseconds), and 
# 's' seconds.'
timer = PrecisionTimer('us')

# However, the precision can be adjusted after initialization if needed:
timer.set_precision('ms')  # Switches timer precision to milliseconds

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 'time' library. The main difference from the 'time' library is that the class 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

timer = PrecisionTimer('us')

# Interval timing example
timer.reset()  # Resets (re-bases) the timer
tm.sleep(1)  # Simulates work (for 1 second)
print(f'Work time: {timer.elapsed} us')  # This returns the 'work' duration using the precision units of the timer.

Delay

Delay timing functionality is the primary advantage of this class over the standard 'time' library. At the time of writing, the 'time' library can provide nanosecond-precise delays via a 'busywait' perf_counter_ns() loop that does not release the GIL. Alternatively, it can release the GIL via sleep() method, that is, however, only accurate up to millisecond precision (up to 16ms on some Windows platforms). PrecisionTimer class can delay for time-periods up to nanosecond precision (on some systems) while releasing or holding the GIL (depends on the method used):

from ataraxis_time import PrecisionTimer
import time as tm

timer = PrecisionTimer('us')

# GIL-releasing microsecond delays.
for i in range(10):
    print(f'us delay iteration: {i}')
    timer.delay_block(500)  # Delays for 500 microseconds, does not release the GIL

# Non-GIL-releasing milliseconds delay (uses sleep for millisecond delays to optimize resource usage).
timer.set_precision('ms')  # Switches timer precision to milliseconds
for i in range(10):
    print(f'ms delay iteration: {i}')
    timer.delay_noblock(500)  # Delays for 500 milliseconds, releases the GIL

Date & Time Helper Functions

These are minor helper methods that are not directly part of the timer class showcased above. Since these methods are not intended for realtime applications, they are implemented using pure python (slow), rather than fast c-extension method.

Convert Time

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

from ataraxis_time.time_helpers import convert_time

# The method can convert single inputs...
initial_time = 12
time_in_seconds = convert_time(time=initial_time, from_units='d', to_units='s')  # Returns 1036800.0

# And Python iterables and numpy arrays
initial_time = np.array([12, 12, 12])
# Returns a numpy aray with all values set to 1036800.0 (uses float_64 format)
time_in_seconds = convert_time(time=initial_time, from_units='d', to_units='s')

Get Timestamp

This method is used to get timestamps accurate up to seconds. This is typically helpful when time-stamping file names and slow events.

from ataraxis_time.time_helpers import get_timestamp

# Obtains the current date and time and uses it to generate a timestamp that can be used in file-names (for example).
dt = get_timestamp(time_separator='-')  # Returns 2024-06-18-00-06-25 (yyyy-mm-dd-hh-mm-ss)

API Documentation

See the API documentation for the detailed description of the methods and classes exposed by components of this library. The documentation also covers the C++ source code and benchmark-timer command line interface command.


Developers

This section provides installation, dependency, and build-system instructions for the developers that want to modify the source code of this library. Additionally, it contains instructions for recreating the conda environments that were used during development from the included .yml files.

Installing the library

  1. Download this repository to your local machine using your preferred method, such as git-cloning.
  2. cd to the root directory of the project using your command line interface of choice.
  3. Install development dependencies. You have multiple options of satisfying this requirement:
    1. Preferred Method: Use conda or pip to install tox or use an environment that has it installed and call tox -e import to automatically import the os-specific development environment included with the source code in your local conda distribution. Alternatively, you can use tox -e create to create the environment from scratch and automatically install the necessary dependencies using pyproject.toml file. See environments section for other environment installation methods.
    2. Run python -m pip install .'[dev]' command to install development dependencies and the library. For some systems, you may need to use a slightly modified version of this command: python -m pip install .[dev].
    3. As long as you have an environment with tox installed and do not intend to run any code outside the predefined project automation pipelines, tox will automatically install all required dependencies for each task.

Note: When using tox automation, having a local version of the library may interfere with tox tasks that attempt to build the library using an isolated environment. While the problem is rare, our 'tox' pipelines automatically install and uninstall the project from its' conda environment. This relies on a static tox configuration and will only target the project-specific environment, so it is advised to always tox -e import or tox -e create the project environment using 'tox' before running other tox commands.

Additional Dependencies

In addition to installing the required python packages, separately install the following dependencies:

  1. Doxygen, if you want to generate C++ code documentation.
  2. 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).
  3. Python distributions, one for each version that you intend to support. Currently, this library supports 3.10, 3.11, and 3.12. The easiest way to get tox to work as intended is to have separate python distributions, but using pyenv is a good alternative too. This is needed for the 'test' task to work as intended.

Development Automation

This project comes with a fully configured set of automation pipelines implemented using tox. Check tox.ini file for details about 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 commits to this project have to successfully complete the tox task before being pushed to GitHub. To minimize the runtime task for this task, use tox --parallel.

For more information, you can also see the 'Usage' section of the ataraxis-automation project documentation.

Environments

All environments used during development are exported as .yml files and as spec.txt files to the envs folder. The environment snapshots were taken on each of the three explicitly supported OS families: Windows 11, OSx (M1) 14.5 and Linux Ubuntu 22.04 LTS.

Note! Since the OSx environment was built against an M1 (Apple Silicon) platform and may not work on Intel-based Apple devices.

To install the development environment for your OS:

  1. Download this repository to your local machine using your preferred method, such as git-cloning.
  2. cd into the envs folder.
  3. Use one of the installation methods below:
    1. Preferred Method: Install tox or use another environment with already installed tox and call tox -e import.
    2. Alternative Method: Run conda env create -f ENVNAME.yml or mamba env create -f ENVNAME.yml. Replace 'ENVNAME.yml' with the name of the environment you want to install (axt_dev_osx for OSx, axt_dev_win for Windows, and axt_dev_lin for Linux).

Hint: while only the platforms mentioned above were explicitly evaluated, this project is likely to work on any common OS, but may require additional configurations steps.

Since the release of ataraxis-automation version 2.0.0 you can also create the development environment from scratch via pyproject.toml dependencies. To do this, use tox -e create from project root directory.

Automation Troubleshooting

Many packages used in 'tox' automation pipelines (uv, mypy, ruff) and 'tox' itself are prone to various failures. In most cases, this is related to their caching behavior. Despite a considerable effort to disable caching behavior known to be problematic, in some cases it cannot or should not be eliminated. If you run into an unintelligible error with any of the automation components, deleting the corresponding .cache (.tox, .ruff_cache, .mypy_cache, etc.) manually or via a cli command is very likely to fix the issue.


Versioning

We use semantic versioning for this project. 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.
  • My NBB Cohort for answering 'random questions' pertaining to the desired library functionality.
  • click project for providing the low-level command-line-interface functionality for this project.
  • tqdm project for providing an easy-to-use progress bar functionality used in our benchmark script.
  • numpy project for providing low-level functionality for our benchmark script.
  • 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 projects used in our development automation pipelines see pyproject.toml.

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

Uploaded Source

Built Distributions

ataraxis_time-2.0.1-pp310-pypy310_pp73-win_amd64.whl (90.9 kB view details)

Uploaded PyPy Windows x86-64

ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (109.1 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (112.2 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (105.6 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

ataraxis_time-2.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl (83.0 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

ataraxis_time-2.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (84.2 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

ataraxis_time-2.0.1-cp312-abi3-win_arm64.whl (85.2 kB view details)

Uploaded CPython 3.12+ Windows ARM64

ataraxis_time-2.0.1-cp312-abi3-win_amd64.whl (90.8 kB view details)

Uploaded CPython 3.12+ Windows x86-64

ataraxis_time-2.0.1-cp312-abi3-win32.whl (86.7 kB view details)

Uploaded CPython 3.12+ Windows x86

ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_x86_64.whl (543.4 kB view details)

Uploaded CPython 3.12+ musllinux: musl 1.2+ x86-64

ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_i686.whl (583.3 kB view details)

Uploaded CPython 3.12+ musllinux: musl 1.2+ i686

ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_aarch64.whl (523.5 kB view details)

Uploaded CPython 3.12+ musllinux: musl 1.2+ ARM64

ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (109.3 kB view details)

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

ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (112.2 kB view details)

Uploaded CPython 3.12+ manylinux: glibc 2.17+ i686

ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (105.5 kB view details)

Uploaded CPython 3.12+ manylinux: glibc 2.17+ ARM64

ataraxis_time-2.0.1-cp312-abi3-macosx_11_0_arm64.whl (83.2 kB view details)

Uploaded CPython 3.12+ macOS 11.0+ ARM64

ataraxis_time-2.0.1-cp312-abi3-macosx_10_14_x86_64.whl (85.2 kB view details)

Uploaded CPython 3.12+ macOS 10.14+ x86-64

ataraxis_time-2.0.1-cp311-cp311-win_arm64.whl (86.7 kB view details)

Uploaded CPython 3.11 Windows ARM64

ataraxis_time-2.0.1-cp311-cp311-win_amd64.whl (92.8 kB view details)

Uploaded CPython 3.11 Windows x86-64

ataraxis_time-2.0.1-cp311-cp311-win32.whl (88.2 kB view details)

Uploaded CPython 3.11 Windows x86

ataraxis_time-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl (546.4 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

ataraxis_time-2.0.1-cp311-cp311-musllinux_1_2_i686.whl (587.0 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

ataraxis_time-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl (526.2 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (112.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (115.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (108.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

ataraxis_time-2.0.1-cp311-cp311-macosx_11_0_arm64.whl (85.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ataraxis_time-2.0.1-cp311-cp311-macosx_10_14_x86_64.whl (87.7 kB view details)

Uploaded CPython 3.11 macOS 10.14+ x86-64

ataraxis_time-2.0.1-cp310-cp310-win_arm64.whl (86.8 kB view details)

Uploaded CPython 3.10 Windows ARM64

ataraxis_time-2.0.1-cp310-cp310-win_amd64.whl (93.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

ataraxis_time-2.0.1-cp310-cp310-win32.whl (88.3 kB view details)

Uploaded CPython 3.10 Windows x86

ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl (546.5 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_i686.whl (587.3 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl (526.2 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (112.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (115.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (108.2 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

ataraxis_time-2.0.1-cp310-cp310-macosx_11_0_arm64.whl (85.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ataraxis_time-2.0.1-cp310-cp310-macosx_10_14_x86_64.whl (87.8 kB view details)

Uploaded CPython 3.10 macOS 10.14+ x86-64

File details

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

File metadata

  • Download URL: ataraxis_time-2.0.1.tar.gz
  • Upload date:
  • Size: 76.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for ataraxis_time-2.0.1.tar.gz
Algorithm Hash digest
SHA256 f92084d140da918e722367b2004e4ef9346316b835eb7136a53c9d26332560be
MD5 5df27b1bc4aaa27b0b5041eef9585677
BLAKE2b-256 b1c850daf205d3a8a5a990fa060e99be1e1703068491f4536d8a6cb5f7e2f1ac

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 5e8b4c2fae9ae423899fbadc8706b4958ae6d4ac9df07f2f1659095128770e4d
MD5 3ae234d2e90c3a9b1775b1a26cd1f426
BLAKE2b-256 b01afb61363a93793f65cc35ad12dffd332630badb798e53fd5dc6d50c1d8e79

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d62715d2be76aec395841e34bec86db812b4dbb44dec55927da308e3ff181a4
MD5 2d3fd56a37c932310d02cd45155d150f
BLAKE2b-256 7ee44369388808835b46de4eb9aff415bac2c120c952a10401904632729046d9

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d8f6b26c096a5b4559e2d74240cde214241db7bba7cbd46e53ca64fd81f8dab9
MD5 73bf37add96629049abe4244f878f857
BLAKE2b-256 dff91e1672b88ff3f8ce18f857899876a8d4bf75d7c28301448338ea01531b71

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3b3fc9c4a6c26a96d4d3990e0673d1bb165cf1015698923540dff8f43a4d9129
MD5 e4c7b771cf1e48cc7c8826d0f1a37d82
BLAKE2b-256 987cc4fea15703f8fb3451263b82e9b37f2bb89849008f6a9cbc24aed92c0c60

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5228a573047fd2abb106e0c338bf8216b449f754f425ec4fd4aabd9f8dd259b6
MD5 3b6e12e39b724f4ebff866741af99464
BLAKE2b-256 f52f026d7330cfb38c77651b31463dd904c620f12fdf402a6a1725f13b8a096b

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 73cb0e3223406994142f814e8e17c37a0788ea5c83626f2d9adbeb9d4ccce086
MD5 e59fd94873bd4b633d2cd632290b809c
BLAKE2b-256 5157da67900b7704e416b8a877d1df16e96f77f6063b4e46e8c975f38c4221b1

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-win_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 06f9b5fb2fd9e8fce9b971dc9613b8973c1789e4e0f90f9dce7b2b236a399510
MD5 959e1cad0135ab1f3c544af46c8cb19e
BLAKE2b-256 efde22959cd45dce4514004ffc97162e5fa6f4c24ccf79b1205bbf3c86c09694

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 948a975921d6d60b8c286ae92658324848c893ea8be572794b3eee7c8d2cbb54
MD5 346e4bccde9a8062256018e0834ae84f
BLAKE2b-256 d842665727b18e966da34299610bc6b83c1ea0b57f289a2623aaf53db5e0115c

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-win32.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-win32.whl
Algorithm Hash digest
SHA256 4f4fb8b38331df8b9e1cadb7a7a1b828580551bee440d8e642f136d3ff30500d
MD5 1a3b44ff2e6ef52f69adcd1cf4615f92
BLAKE2b-256 499e47a08a3d3d3f835e480f503fc379ec52ed89b344488b96f9c75280da361b

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7f172492c8ec06f1e164fc1f120e6ff158adc4bc4b30fd137682996dc250c87b
MD5 8431403db3dac69cef4097088fee6cd6
BLAKE2b-256 8ffd9687eed1fd6b650645b5424dd170e7a8183521ad5432154738e1161ea03f

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 31b836875f044df18f595a2ee22d19227c87096bd52bafddc57389c7db2e4470
MD5 d350858586672fdb5c0719227d078d0d
BLAKE2b-256 7649e8a7408cc3d274f79c8363d7c425b86c3b12210bf09cb8835f2ff585df78

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 914a908c3daa531ec20fb4ea7356efdf4f4df9956b9c82f6a394410e0e536a84
MD5 15315f1b21bdc1e8c0debd647b9bf851
BLAKE2b-256 a8371df7ed8b104d30e8acd2a6094ecd5b59528c11f362a2e929c96a1dc965b5

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72b3e05d45ec07a2951b8cb2f946ebc241a189643775f34faa5022ab7d28beb5
MD5 7d5d0a9ba2571a6922e96b6dcad16ea8
BLAKE2b-256 39c0f53d58b6c0d9be49e641779a5a3ff5a4edce28acf97541f8942dd8db3887

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 be0262b021cc8f237c9da126f0c216fd35139bdb52ee08582a7ca75926f1a1f5
MD5 c227f03a81030bd5e63a351558f5091e
BLAKE2b-256 8b29102839cc74bddc666eb49be1fc438db1e7fe0b9410497adc9c427325f5a1

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dd3dd5b9bcb70ec86739952885d05a4ed302eeeb6e0963fb3dbfe0a178846439
MD5 3491e309aa1b9daee4b3ae63b1f13f48
BLAKE2b-256 2f97252d215445e0f0d556e89b481dacc4934f5efecccddc952bf412aec8338a

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5512bc95be5adb7ff8e88c7134edbe1e60684649027673f86aaf832e69f35310
MD5 7a7e1c1515863afa2f1254286c535b5b
BLAKE2b-256 bc7722b3f007cd2c4c56916f4afb54b7dfc11eefb5fe1bae5ae5616f774af4bd

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp312-abi3-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp312-abi3-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 8238b9a6c628c0045c5fc584d406bc99c5dd0e86fe923ceba6633630cfdccf11
MD5 95827bbafde7d259963f6d01a58082a2
BLAKE2b-256 5bfe052da3c793f5a54b1deb801c0ae2a8604073bfc5fbf54403a795ccf0058b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 593a13877c3254e5931ad9f320368769125d3f2aad4bc890de49f65387885f1e
MD5 7b6bdfe24ab740b5bf617b07873d2b23
BLAKE2b-256 6915d50bdfac1c70fc181ba1ee5aa76bc2506e11f8538b87737fa2dd551d4110

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 88e30aa319d182024b308f74a80e9261a52077bc238bf4b071a6214b0b903df2
MD5 7f34a7e4f444f9c2ddc15a5638faf448
BLAKE2b-256 46c6c2d317269b3b648cb0fd9b10a1b8bf4ba2b3c572b02ec1111259b48158ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 05b192cba17846c60453e14e675d4272dfbf8c549c58b45881f537d3128bf6fd
MD5 7926f66c0f6edff002476f255a76cda5
BLAKE2b-256 6e32d7947bc72b6d2397d46486463fe04250d25123425488a9aaf017ea98da8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9be1f87234ee8f9dd843848957321b098827f65cdc1b2257ab5a24d0beded906
MD5 91b941ba391a5d46b31c63f686b2c3af
BLAKE2b-256 9592033adbeb2cae71a422f12bf738aa6e65cc4d89578c10a344112b094e1dfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 6e882cc47aeeca6e22614c38f3a9dd52596a77c58cec27a040fd52cfa5451657
MD5 b13c37944f558f2d5719d086104a4eaa
BLAKE2b-256 ff8b3cb03b3a9cb3d978162ddc5c2fb9b7d43e640c49c5b4613f64859d47e7a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 115971741e9c3757dc1a60ef75694675a5141827094c122c3bd9fd0f59ab9d48
MD5 317789c9ccf385d99eddd68781cb5b1e
BLAKE2b-256 930dc5fc1c6799fef66d8f755620432ff84caa71e076169696e2cc4f5676c36e

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1789383e339c98eb5403da0c271b4b3f13c78c73f55820bfd4e47115485ada6d
MD5 01af3547f0fc4539818c8c2c29914931
BLAKE2b-256 a38bb7859189170af0c654e9910ecddb828cfd08f7728abbf456e7e3168165eb

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5189ba769e89acdcfc91498deea61d561c457f08fa470b56fb85bceb3dc09886
MD5 31c59f0fb2a8e4d56c4f9c3397fb163e
BLAKE2b-256 2ce95516f8eb62af062b09fd7b445ba3c9162169685226774bca2a63d3c602cb

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0ecc388acd5b90da1fbb7d0348b8dcef6f2b793883b32f163dc9f7906a92d7c0
MD5 73da8f15e7897ee266d26f5827812d73
BLAKE2b-256 b187a12c8396d3fd1e1ce1b49946409ad0c7d16bdfc0f216f76426f6cb70d4c1

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 403881a55b0b3985275f71f02f081d1d0fb8706e19a63dbaa2b957951b28264d
MD5 c7523ed0774602906cc137d30ff7d72f
BLAKE2b-256 0d167c3d7aa30e8933e7cdf856ad3fc42d057584af49954f101ae0b3b24180b0

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp311-cp311-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 3cb7832248dec850d5ccaf9452efc3da7aaf05d9dcfb8f35b96284e12c1f1521
MD5 b3da87f67d6cd2f403d23c2f575786aa
BLAKE2b-256 4750b210b2b3b132cd53e4103e6f55bc9e7aa2ea1a1010f74dd0eeac226c7f5e

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-win_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 55cf73d0302a57825bd1630726d28bd17267e14be4725f77401cb0067b576d95
MD5 8d343b0c7f298f4466db7b9f2fab3313
BLAKE2b-256 c30d6f540c7e3dbbd22240325e6d80b5011b843c7f15710ede87ee4c3c3e7d69

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3f52b6eb86564ad8f147e75966f4bd3fa3921064d656390df8f05c6c496af7a3
MD5 c3e83e27188a29c456d0fff92c237d1d
BLAKE2b-256 7e111a51f447c1cf111cb62ff4e6b958640c16d82bd969fc6dd4c0c65fba50ee

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 58d1b3e692e7993d8ee04f52f4f8dceff34e718c8bfb170a506b57455e81d9f7
MD5 2d5dc441988276bdf50c0c5b57feb8dc
BLAKE2b-256 dcd90234d4a9524ffad76cebf889aebd8d2c346b6a2719c30b12e6af34ce2e0a

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7042e1d051d96d36b4733d72bd751be9b2e0739f32af3bb8e1890f9b35bb6708
MD5 f7642fcc61ccffb0d6d89336e2badc7f
BLAKE2b-256 5b1a9ebaece9f4fcbf47ea6ab30ef535d8df16aa93d6d424503a1f9ebdc40b27

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 213707c86677c665f29628142a70ab7d2f11265d672b0c27883c2e9bc9d1c4e0
MD5 a7c4b84ac591b3b254fba144e1510d36
BLAKE2b-256 2beed3b41898a74012536c6bdd7cfc090cd71c83ebfd4b5ffbb25477e3d2950a

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 de295814b5bc97f789c81284885c1e2fdf5f3a574ab4ffe776ed3311516a50ed
MD5 7273b710f80000f5aa1bc553c5a92cae
BLAKE2b-256 6afba32f1b8bc1cd1216a183a5ecf7b701816719530675534f1860b961d82dda

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73fc4e281893be3595544be9124d042b6d27a4350474364218780e7493520023
MD5 e13d7a3818e5cdc102c941fd7dec6475
BLAKE2b-256 2e9702ea374ff83e0c3767069e7130bc4879f40baccadeca49f4b4a8596c25c7

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ffcee7cc7d2f982f39b3b9da8a3333f69a2b620cbb5649d37d88bdf7db91dcdd
MD5 3ee93596ed55254d4c27a259cb66bf12
BLAKE2b-256 3edb8a170de95e5fda935bc28ee1204e6f1fa6116cf1125198f12b51ac294fcb

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 07be0ff8d0400193481c07a9cafe006a4dea32a7cea22485e1e2fdb75c1231a1
MD5 e7549c3c6ede41dd693538aab635d0ec
BLAKE2b-256 13340edcfb5b3199fb89202b8892201c533039b7fe3983d21c7bec70cc78320e

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60415464f1ba01aa6215e530a36995ad1f7dc7ca4c9581bff0ec84fd5c2ddbc3
MD5 2279719969dc7c7711937e4958ac33d4
BLAKE2b-256 a2fb3622a329a6b134ba55c3bf8ee746a7dc6caf18891b479a3b4820899d81d8

See more details on using hashes here.

File details

Details for the file ataraxis_time-2.0.1-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for ataraxis_time-2.0.1-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 aa241857f9716df4d2cd229cde95fa53288d055b3123d4d36bcb059bbaa7a17d
MD5 dacda61f3ced785bfbee2272d0a59c98
BLAKE2b-256 50e3bc493b37eedbfa42c0f936d9b0147ce45a1e5fc309af5b02bb7da2e5850a

See more details on using hashes here.

Supported by

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