Skip to main content

ataraxis-time

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, delay, timeout, and polling 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, including timestamp generation and parsing, time-unit conversion, rate-interval conversion, and timedelta interoperability. This library is part of the Ataraxis framework for AI-assisted scientific hardware control.


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.
  • Timeout guard class for activity-based and duration-based timeout tracking.
  • Lap recording, human-readable elapsed time formatting, and periodic polling via an infinite generator.
  • Frequency-to-interval and interval-to-frequency conversion helpers.
  • Timestamp generation, conversion, and parsing with configurable precision levels.
  • Interoperability with Python datetime.timedelta objects.
  • Apache 2.0 License.

Table of Contents


Dependencies

For users, all library dependencies are installed automatically by all supported installation methods. For developers, 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 pip install . to install the project and its dependencies.

pip

Use the following command to install the library and all of its dependencies via pip: pip install ataraxis-time


Usage

Precision Timer

The timer API is inspired by the elapsedMillis library for Teensy and Arduino microcontrollers.

All timer class functionality is realized through a C-extension class wrapped into the PrecisionTimer class.

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

# 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)
print(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
print(f"Precision: {timer.precision}")

Interval Timing

Interval timing functionality is realized through two methods: reset() and the elapsed property. This functionality is identical to using perf_counter_ns() from the 'time' library. The main difference is that 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

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")

Delay

The standard 'time' library provides 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. The 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

# 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")

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

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

# Non-GIL-releasing microsecond delay:
print("block=True (holds GIL):")
counter = 0  # Resets the counter
timer.delay(100, block=True)  # 100us delay
blocking_count = counter
print(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
print(f"Difference: block=False allows ~{non_blocking_count / blocking_count:.0f}x more counting!")
thread.join()

Lap Timing

The lap() method records the current elapsed time, appends it to an internal list, and resets the timer. All recorded lap times are accessible through the laps property.

from ataraxis_time import PrecisionTimer
import time as tm

timer = PrecisionTimer("ms")

# Records three laps
for i in range(3):
    tm.sleep(0.1)  # Simulates work
    duration = timer.lap()
    print(f"Lap {i + 1}: {duration} ms")

# Retrieves all recorded laps as a tuple
print(f"All laps: {timer.laps}")

Formatted Elapsed Time

The format_elapsed() method returns the current elapsed time as a human-readable string, automatically selecting the most appropriate units.

from ataraxis_time import PrecisionTimer
import time as tm

timer = PrecisionTimer("us")
tm.sleep(2.5)  # Simulates work
print(f"Elapsed: {timer.format_elapsed()}")  # e.g. "2 s 500.117 ms"
print(f"Detailed: {timer.format_elapsed(max_fields=3)}")  # e.g. "2 s 500 ms 117 us"

Polling

The poll() method provides an infinite generator that yields an iteration count after each delay cycle.

from ataraxis_time import PrecisionTimer

timer = PrecisionTimer("ms")

# Polls every 100 ms, runs 10 iterations
for count in timer.poll(100):
    print(f"Iteration {count}")
    if count >= 10:
        break

Timeout

The Timeout class provides a timeout guard built on PrecisionTimer. It supports checking whether a specified duration has elapsed and offers activity-based reset (kick) and full reset with optional duration changes.

from ataraxis_time import Timeout
import time as tm

# Creates a 500 ms timeout
timeout = Timeout(duration=500, precision="ms")

# Checks timeout status
tm.sleep(0.1)
print(f"Expired: {timeout.expired}")  # False
print(f"Remaining: {timeout.remaining} ms")
print(f"Elapsed: {timeout.elapsed} ms")

# Resets the timeout timer without changing the duration (activity-based reset)
timeout.kick()

# Resets the timeout with a new duration
timeout.reset(duration=1000)

Date and Time Helper Functions

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 decimal places, and works with time-scales from nanoseconds to days.

from ataraxis_time import convert_time, TimeUnits

# The conversion works for Python and NumPy scalars. Use the TimeUnits enumeration to specify input and
# output units. 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)
print(f"12 days is {time_in_seconds} seconds.")

# 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_minutes = convert_time(time=initial_time, from_units="s", to_units="m", as_float=True)
print(f"5 seconds is {time_in_minutes} minutes.")

Rate and Interval Conversion

The rate_to_interval() and interval_to_rate() functions convert between frequencies (Hz) and time intervals.

from ataraxis_time import rate_to_interval, interval_to_rate, TimeUnits

# Converts a 30 Hz frequency to a microsecond interval
interval_us = rate_to_interval(rate=30, to_units=TimeUnits.MICROSECOND)
print(f"30 Hz = {interval_us} us interval")

# Converts a 1000 us interval back to Hz
rate_hz = interval_to_rate(interval=1000, from_units=TimeUnits.MICROSECOND)
print(f"1000 us = {rate_hz} Hz")

Timedelta Interoperability

The to_timedelta() and from_timedelta() functions convert between numeric time values and Python datetime.timedelta objects.

from ataraxis_time import to_timedelta, from_timedelta, TimeUnits

# Converts 500 milliseconds to a timedelta
td = to_timedelta(time=500, from_units=TimeUnits.MILLISECOND)
print(f"500 ms as timedelta: {td}")

# Converts a timedelta back to microseconds
us_value = from_timedelta(timedelta_value=td, to_units=TimeUnits.MICROSECOND)
print(f"Timedelta as microseconds: {us_value}")

Timestamps

Timestamp methods generate and work with microsecond-precise UTC timestamps. The generated timestamp can be returned as and freely converted between three supported formats: string, bytes array, and an integer number of microseconds elapsed since the UTC epoch onset. The precision parameter controls how much detail is included in the output.

from ataraxis_time import get_timestamp, convert_timestamp, TimestampFormats, TimestampPrecisions

# Gets the current date and time as a timestamp. The timestamp is precise up to microseconds by default.
# Use TimestampFormats to specify the desired format.
dt = get_timestamp(time_separator="-", output_format=TimestampFormats.STRING)
print(f"Current timestamp: {dt}.")

# Uses the precision parameter to control the detail level of the output.
dt_day = get_timestamp(output_format=TimestampFormats.STRING, precision=TimestampPrecisions.DAY)
print(f"Day-precision timestamp: {dt_day}.")

# 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)
print(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)
print(
    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}."
)

Parse Timestamp

The parse_timestamp() function parses arbitrary datetime strings using strptime-compatible format strings and returns them as timestamps in any supported format.

from ataraxis_time import parse_timestamp, TimestampFormats

# Parses a datetime string into a microsecond integer timestamp
us_timestamp = parse_timestamp(
    date_string="2024-03-15 14:30:00",
    format_string="%Y-%m-%d %H:%M:%S",
    output_format=TimestampFormats.INTEGER,
)
print(f"Parsed timestamp: {us_timestamp}")

# Parses into a string timestamp with day precision
day_timestamp = parse_timestamp(
    date_string="March 15, 2024",
    format_string="%B %d, %Y",
    output_format=TimestampFormats.STRING,
    precision="day",
)
print(f"Day-precision parsed timestamp: {day_timestamp}")

CLI Commands

This library provides the axt-benchmark CLI that exposes the following commands:

Command Description
axt-benchmark Benchmarks interval timing and delay accuracy on the local system

Use axt-benchmark --help for detailed usage information.


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 the axt-benchmark CLI command.


Developers

This section provides installation, dependency, and build-system instructions for the developers that want to modify the source code of this library.

Installing the Project

Note, this installation method requires mamba version 2.3.2 or above. Currently, all 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 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, to generate C++ code documentation.
  3. A C++ build toolchain and, for cross-architecture wheels, Docker, to build binary wheels via cibuildwheel. Testing cross-compiled wheels has per-platform prerequisites. On macOS, Rosetta 2 is required to test x86_64 wheels on Apple Silicon, installed with softwareupdate --install-rosetta --agree-to-license. On Linux, non-native architectures build and test inside Docker under QEMU emulation, registered once per machine with docker run --privileged --rm tonistiigi/binfmt --install all. On Windows, ARM64 wheels need the ARM64 MSVC runtime, installed through the Visual Studio Installer. Run python tools/check_build_env.py to verify these prerequisites before building.

Development Automation

This project uses tox for development automation. The following tox environments are available:

Environment Description
lint Runs ruff formatting, ruff linting, and mypy type checking
stubs Generates py.typed marker and .pyi stub files
{py312,...}-test Runs the test suite via pytest for each supported Python
coverage Aggregates test coverage and applies the 100% coverage gate
docs Builds the API documentation via Sphinx
build Builds sdist and wheel distributions
upload Uploads distributions to PyPI via twine
deploy Uploads the built documentation to the Netlify site
install Builds and installs the project into its mamba environment
uninstall Uninstalls the project from its mamba environment
create Creates the project's mamba development environment
remove Removes the project's mamba development environment
provision Recreates the mamba environment from scratch
export Exports the mamba environment as a .yml file
import Creates or updates the mamba environment from a .yml file

Run any environment using tox -e ENVIRONMENT. For example, tox -e lint.

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.

AI-Assisted Development

Claude Code skills and other AI development assets for this project are distributed through the ataraxis marketplace as part of the automation plugin. Install the plugin from the marketplace to make all associated skills and development tools available to compatible AI coding agents.

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 directories (.tox, .ruff_cache, .mypy_cache, etc.) manually or via a CLI command typically resolves 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 Apache 2.0 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.

Metadata

Release files for ataraxis-time 7.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ataraxis-time 7.0.0
File Size Uploaded
ataraxis_time-7.0.0.tar.gz 72.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ataraxis-time 7.0.0
File
ataraxis_time-7.0.0-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
ataraxis_time-7.0.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
ataraxis_time-7.0.0-cp314-cp314-win32.whl CPython 3.14 CPython 3.14 Windows x86-32 Details
ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_i686.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-32 Details
ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
ataraxis_time-7.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
ataraxis_time-7.0.0-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl CPython 3.14 CPython 3.14 Linux glibc 2.26+ x86-32, Linux glibc 2.28+ x86-32 Details
ataraxis_time-7.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
ataraxis_time-7.0.0-cp314-cp314-macosx_15_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 15.0+ x86-64 Details
ataraxis_time-7.0.0-cp314-cp314-macosx_15_0_arm64.whl CPython 3.14 CPython 3.14 macOS 15.0+ ARM64 Details
ataraxis_time-7.0.0-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
ataraxis_time-7.0.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
ataraxis_time-7.0.0-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_i686.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-32 Details
ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
ataraxis_time-7.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
ataraxis_time-7.0.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-32, Linux glibc 2.26+ x86-32 Details
ataraxis_time-7.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
ataraxis_time-7.0.0-cp313-cp313-macosx_15_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 15.0+ x86-64 Details
ataraxis_time-7.0.0-cp313-cp313-macosx_15_0_arm64.whl CPython 3.13 CPython 3.13 macOS 15.0+ ARM64 Details
ataraxis_time-7.0.0-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
ataraxis_time-7.0.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
ataraxis_time-7.0.0-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_i686.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-32 Details
ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
ataraxis_time-7.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
ataraxis_time-7.0.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-32, Linux glibc 2.26+ x86-32 Details
ataraxis_time-7.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
ataraxis_time-7.0.0-cp312-cp312-macosx_15_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 15.0+ x86-64 Details
ataraxis_time-7.0.0-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details

Total release size: 9.2 MB

Release files / ataraxis_time-7.0.0.tar.gz

Download URL ataraxis_time-7.0.0.tar.gz
Size 72.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3792db0c7fbe8262079b3da26aaa79deadd3ab8fcecf1aa1768acbd3a8251646
BLAKE2b-256 checksum
How to use checksums
30cc483721b9420b8b7c7bdb85a26d644af620d482c86985bb47a4cce9f2c1dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-win_arm64.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-win_arm64.whl
Size 445.9 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
2824188799a48847f9d3834685570be548ef6745c345eec0cf997547a991aefa
BLAKE2b-256 checksum
How to use checksums
d01459a846bef9a0923e2ed5fc6ac0959bfb03ef8dde362068b5b2e0eb70916f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-win_amd64.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-win_amd64.whl
Size 289.2 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
c779ef204e87b87e72724ba1c9550be4e61b112238e5aa5cb50a03ec6628b3f9
BLAKE2b-256 checksum
How to use checksums
9baf5df510e4a3c2a93f2a3c5e9195b4a0e30de7cd0696098e5100076e7ea47e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-win32.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-win32.whl
Size 268.3 kB
Tags CPython 3.14 Windows x86-32
SHA-256 checksum
How to use checksums
75c0d20e1d7d5fbcdf88891495401356297b599a10a1701de3cd525d6999ce33
BLAKE2b-256 checksum
How to use checksums
92b8ec7f9716252d0f7c2e097c56bb7307d42acf10f6c623e185962211b58908
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 544.2 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
63c4b71a5e3735c803e79187c7c1ee9e1dd82d3fc6a6d289dc8afa57ab75a229
BLAKE2b-256 checksum
How to use checksums
794f376ca95cb8ad96447e22e08c49ebbbe6ecdd8b333a59184c8860d662d321
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_i686.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_i686.whl
Size 590.9 kB
Tags CPython 3.14 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
c843dd28f537d78e6d867c0b004a8cfd1a2634ff0f3cfc5717ad88c2ed88aff3
BLAKE2b-256 checksum
How to use checksums
fba857e62d5dac40a4e652731a579ae8294a838aee29d3166f34dbcafb78cc3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-musllinux_1_2_aarch64.whl
Size 523.2 kB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
4b3aa84705d39e3b9ce993b7406a964b456f93aea3f8ecd689ed855f68b98ac8
BLAKE2b-256 checksum
How to use checksums
e53e95c95a67755a36139f63e9710e88f2dd1c7007ee9a6779276da68df285fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 86.1 kB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3f05eaa649b64a52ca709f8d45325e6540a0279018a43493949c79afb226e86e
BLAKE2b-256 checksum
How to use checksums
6f13bbace4509d46e08559c32f986f4ceeac8639b204452c26bcb19011e695e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl
Size 87.3 kB
Tags CPython 3.14 Linux glibc 2.26+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
133e27d345fffecdb641b9444fd8d563cc2bfb230e1f7cdf8e8f3932a116cefd
BLAKE2b-256 checksum
How to use checksums
f50a95bd4ca8dc976c01052a96fcf833bf22f798284688c397d673d8d6986ac3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 82.9 kB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2a18f9159b5140a31ba36290e6b72affb2e2ce349fbe1c353b882d2aef0e842b
BLAKE2b-256 checksum
How to use checksums
e8dfb7026abc1d72eae8c1c271e97fe25780c904c2c0ed2ee5224f016b960aab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-macosx_15_0_x86_64.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-macosx_15_0_x86_64.whl
Size 76.8 kB
Tags CPython 3.14 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
246722a2122ee7cb7c68e31754f27a1e0c6c9a0e6f2a253d4a5499093e2b3ddd
BLAKE2b-256 checksum
How to use checksums
16ea0efcf4733496ed7e958dbbe16c6e85179f20d08ddccbdc1cd8aff37c3739
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp314-cp314-macosx_15_0_arm64.whl

Download URL ataraxis_time-7.0.0-cp314-cp314-macosx_15_0_arm64.whl
Size 69.4 kB
Tags CPython 3.14 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
257c040aabde69439ad7f33e8706bfc8206c1bf1b4b298288ca47d6066478ada
BLAKE2b-256 checksum
How to use checksums
2aa71b068a72b29432254861045e26f387f03a61fbeaf0c4808a3caf1d90d2ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-win_arm64.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-win_arm64.whl
Size 431.7 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
670365b49e65e820bcbc999dad7527489092c8b11c81756150442e4f5c60c874
BLAKE2b-256 checksum
How to use checksums
9c322609acc78feeedbfdf869ec05e40c552eb54013e9bd470c5c84b9f84a33f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-win_amd64.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-win_amd64.whl
Size 281.0 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
bf72ac71cb3af48b8913de712aeba9765f56e8b0a607c6c2f4aa432b770585b9
BLAKE2b-256 checksum
How to use checksums
3314d7947b4ed6f9534066f8bd9aa95e428ce477200b278fef67916ed1390605
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-win32.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-win32.whl
Size 261.7 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
96fa324e5c780bf5f32c110c35097ab675c6535ad5bad9328546138cfa7bc771
BLAKE2b-256 checksum
How to use checksums
6f8dc01034961ec89e1103c21228dca13c43b76da118665c6483280527300de3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 544.2 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e38b1c167a812daf0ce789aea2bb87a564f52b9ad3f2f37827b0b73b798f2eb7
BLAKE2b-256 checksum
How to use checksums
00e598b1d38f5b998538d0c9ecf9ca48bf8ba8e956a6363c41cf2adf2a873121
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_i686.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_i686.whl
Size 590.6 kB
Tags CPython 3.13 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
ff8a849f5fc8fb6cb081c35588e3c47b1d6dc1bf6340d77f72d98d7763ccb11d
BLAKE2b-256 checksum
How to use checksums
55a130ed951f1b2d501b822a909ce48c5871edf3b9a9278198c26daf29d5a989
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-musllinux_1_2_aarch64.whl
Size 522.8 kB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
cb2a7a15bc0caca554fd5a8ce3df96f3b6919b0dddd88b7a6c991391ce112b83
BLAKE2b-256 checksum
How to use checksums
c4cfbd7932aa6c071f0ddd8022b0cee1307f84f6a15d5d1bec37bfa636bb63a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 86.1 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f5fa26b18fed41bae35b64b747b499ac833961dece7497222cd13e3163db2aa3
BLAKE2b-256 checksum
How to use checksums
b63cb143aeb974a7c434b23e127bea01ec9f463f88b409bf28419757d8533f2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl
Size 87.1 kB
Tags CPython 3.13 Linux glibc 2.26+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
7270eef82e63adbde93095bff1d89cdfa9046e0adbd1f44ea21a2ebc78db8480
BLAKE2b-256 checksum
How to use checksums
2dd17557bdf1c7cb7bec84a86562f5d68ddef68e87083d056122359cce34ead1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 82.7 kB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
113480aeb9685901c9dc40c293b164ff51bc44ad52eb0868372720e8d02a7769
BLAKE2b-256 checksum
How to use checksums
3692a7cc36a22e723befa457afb7ee0e039d08d3da78d2ec33ab0bdf5243943a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-macosx_15_0_x86_64.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-macosx_15_0_x86_64.whl
Size 76.8 kB
Tags CPython 3.13 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
529c6ec35872a49c1377fccea0f711d2d9ff35d769f05f349004727a29de9237
BLAKE2b-256 checksum
How to use checksums
e1eb1aac6946d28e6c40e1db58b5b2e987971870b2471e5eba50fb358197284e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp313-cp313-macosx_15_0_arm64.whl

Download URL ataraxis_time-7.0.0-cp313-cp313-macosx_15_0_arm64.whl
Size 69.3 kB
Tags CPython 3.13 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
0fa21bbacd8a3e970d9f5cf6199c805b870810bc87926c9bff42057fc4f653a1
BLAKE2b-256 checksum
How to use checksums
3324708036cf150d03d563a831ba6b3ee344cb845910e79aa48b350841a5a717
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-win_arm64.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-win_arm64.whl
Size 431.8 kB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
6c82af256e2fc0d44ba19ce9343921d806d3a12ef0aa231cc21ee2b23790f7c2
BLAKE2b-256 checksum
How to use checksums
00f566293eeece2d8f99de9828bbf4df173e30b4ca5149324164e3b39ed92585
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-win_amd64.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-win_amd64.whl
Size 281.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
a756224176879b0d35a56f311428e128e37cd0a8ac18769bd34632d7ec18eada
BLAKE2b-256 checksum
How to use checksums
d9a59850cc727293dec45e1f1f20e08d77f77efa8e5cca73b89108c3caa38c79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-win32.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-win32.whl
Size 261.7 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
360f948c8e3210f1a2615da8b5051b7449da33266c90bc707232824a84370916
BLAKE2b-256 checksum
How to use checksums
2c97d80596244143ef2f14c2c8ca30442b08d2882f98a4ea076b9464d073199b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 544.4 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
d4d5d971f49dd506eb1d0133580f7d2d65544dc0919c73110c805d871e5f6c33
BLAKE2b-256 checksum
How to use checksums
046813ed95ec2d1d47a662c6c286057a9a224fc15ba0f2eadd81500790af12e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_i686.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_i686.whl
Size 590.6 kB
Tags CPython 3.12 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
25871127ad08aa675def2c1dbdbf9ac9dab461e89975d6664fa1ce25d3057be7
BLAKE2b-256 checksum
How to use checksums
dc0ab1d3ebbb7defdfe7bcf030b878a2e728555a4d9ce9b0beac0c8e86d290b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
Size 522.7 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
b6ba772a8193f08f7d7055e44ec08c8086ec547426122e0c007cf943fb21cc8e
BLAKE2b-256 checksum
How to use checksums
ae886d218a26732b4a36760acf21717165b2276c663405eb0714e1c6a3466e24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 86.2 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
95fd0b1a905d1f25cd622dfafffedfe1182e896d1a5c70f156e54f0498ba395d
BLAKE2b-256 checksum
How to use checksums
afe448476b92dfa39b59265395554ae562d21ed9ff6ad2b0bab9c84f10c1906a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl
Size 87.2 kB
Tags CPython 3.12 Linux glibc 2.26+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
e17d37815888d54f445a2d4c49d45d82ac7cbd354318cd252c4ed3198e017451
BLAKE2b-256 checksum
How to use checksums
9b1d1db7da9536960b5b6398e51fb7da396acead9b9152d33b347fc961da57c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 82.8 kB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e738a51fa914a78c6111162b22a4f63f258508454f4c12523401925ff5e8e6c1
BLAKE2b-256 checksum
How to use checksums
0bc6d602b096c39ce9c562fda91bc34f93440c138b31a34e6f9b97f331615b29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-macosx_15_0_x86_64.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-macosx_15_0_x86_64.whl
Size 76.9 kB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
061a162e525020fc7b88262866ff52b39e9f88fdcfad7e69909b3730c9a5910c
BLAKE2b-256 checksum
How to use checksums
69f6499bdfa707761fd6a823e3b911c84011b7f2635c05d1c6efb816ec662259
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / ataraxis_time-7.0.0-cp312-cp312-macosx_15_0_arm64.whl

Download URL ataraxis_time-7.0.0-cp312-cp312-macosx_15_0_arm64.whl
Size 69.4 kB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
b9990cae0ff492b0d506fe9c28bc77b8cefe1728013abf3436a8fdfe52774848
BLAKE2b-256 checksum
How to use checksums
62707f8968ce338881cc0f9a556a102a7307924ac401e60cb9512d3629c6ec39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

7.0.0 This release

34 release files

6.0.2

34 release files

6.0.1

34 release files

6.0.0

34 release files

5.0.0

34 release files

4.0.0

35 release files

3.0.0

31 release files

2.0.1

40 release files

2.0.0

19 release files

1.1.0

40 release files

1.0.4

40 release files

1.0.3

40 release files

1.0.2

52 release files

1.0.1

52 release files

1.0.0

52 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page