Skip to main content

rust_neotools

A high-performance Python library (written in Rust) for Neopets-related calculations, focusing on Island Mystic avatar eligibility and Symol Hole timing predictions.

Installation

Install uv from astral-sh/uv

uv pip install rust_neotools

Features

  • Blazing fast: Written in Rust with parallel processing for brute-force operations
  • Zero dependencies: Only requires datetime from Python's standard library
  • Type-safe: Fully typed with .pyi stub files included

API Reference

IslandMystic

The Island Mystic class provides methods to check avatar eligibility and brute-force search for usernames or dates.

IslandMystic.check(date, username)

Check if a username is eligible for an Island Mystic avatar on a specific date (English language).

Parameters:

  • date (datetime): The date to check
  • username (str): The Neopets username to check

Returns: bool - True if eligible, False otherwise

Example:

from datetime import datetime
from rust_neotools import IslandMystic

date = datetime(2022, 10, 30)
username = "diceroll123"

if IslandMystic.check(date, username):
    print(f"{username} gets an avatar on {date}!")

IslandMystic.check_non_english(date, username)

Check if a username is eligible for an Island Mystic avatar on a specific date (non-English language).

Parameters:

  • date (datetime): The date to check
  • username (str): The Neopets username to check

Returns: bool - True if eligible, False otherwise

Example:

from datetime import datetime
from rust_neotools import IslandMystic

date = datetime(2030, 6, 21)
username = "diceroll123"

if IslandMystic.check_non_english(date, username):
    print(f"{username} gets an avatar on {date}!")

IslandMystic.brute_force_day(date, english)

Find all 3-4 character usernames that are eligible for an Island Mystic avatar on a specific date.

Parameters:

  • date (datetime): The date to search for
  • english (bool): True for English language, False for non-English

Returns: list[str] - Sorted list of eligible usernames

Example:

from datetime import datetime
from rust_neotools import IslandMystic

date = datetime(2023, 1, 3)
usernames = IslandMystic.brute_force_day(date, english=True)
print(f"Found {len(usernames)} eligible usernames")
print(f"First few: {usernames[:5]}")

Note: This method tests all combinations of 3-4 character usernames (alphanumeric + underscore) and uses parallel processing for speed. It may use up your entire CPU and take several seconds to complete. 😂

IslandMystic.brute_force_user(date, username, step, english)

Find the next date when a specific username will be eligible for an Island Mystic avatar.

Parameters:

  • date (datetime): The starting date for the search
  • username (str): The Neopets username to search for
  • step (int): Number of days to increment (positive for forward, negative for backward)
    • Generally this is expected to be either 1 or -1.
  • english (bool): True for English language, False for non-English

Returns: datetime | None - The next eligible date, or None if not found within datetime bounds

Example:

from datetime import datetime
from rust_neotools import IslandMystic

start_date = datetime(2023, 3, 31)
username = "diceroll123"

next_date = IslandMystic.brute_force_user(start_date, username, step=1, english=True)
if next_date:
    print(f"Next avatar date for {username}: {next_date}")

Symol

The Symol class provides methods to determine the Symol Hole time window for any given date.

Symol.get_minute(date)

Get the starting minute of the Symol Hole window for a specific date.

Parameters:

  • date (datetime): The date to check

Returns: int - The starting minute (0-59), or 60 for skip days

Example:

from datetime import datetime
from rust_neotools import Symol

date = datetime(2023, 3, 10)
minute = Symol.get_minute(date)
print(f"Symol window starts at minute {minute}")

Note: A return value of 60 indicates a "skip day" where the Symol event is not available.

Symol.get_window(date)

Get the full Symol Hole time window (up to 4 minutes) for a specific date.

Parameters:

  • date (datetime): The date to check

Returns: list[int] - List of valid minutes (empty list for skip days)

Example:

from datetime import datetime
from rust_neotools import Symol

date = datetime(2023, 3, 10)
window = Symol.get_window(date)  # [9, 10, 11, 12]
print(f"Valid minutes: {window}")

Note: The window may contain fewer than 4 minutes if it would extend past minute 59. Skip days return an empty list.


Php5Random

Reimplementation of PHP5's rand()/srand() (on Linux, backed by glibc's random()).

Php5Random(seed)

Parameters:

  • seed (int): The seed value

Example:

from rust_neotools import Php5Random

rng = Php5Random(1234)
print(rng.rand())              # next random number in the sequence
print(rng.rand_range(1, 100))  # next random number, scaled to [1, 100]

Php5Random.rand()

Returns the next random number in the sequence.

Returns: int

Php5Random.rand_range(min, max)

Returns the next random number in the sequence, scaled to the given range.

Parameters:

  • min (int): Lower bound (inclusive)
  • max (int): Upper bound (inclusive)

Returns: int


Php5MtRandom

Reimplementation of PHP5's mt_rand()/mt_srand() (a genuine Mersenne Twister, MT19937).

Php5MtRandom(seed)

Parameters:

  • seed (int): The seed value

Example:

from rust_neotools import Php5MtRandom

rng = Php5MtRandom(1234)
print(rng.rand())              # next random number in the sequence
print(rng.rand_range(1, 100))  # next random number, scaled to [1, 100]

Php5MtRandom.rand()

Returns the next random number in the sequence.

Returns: int

Php5MtRandom.rand_range(min, max)

Returns the next random number in the sequence, scaled to the given range.

Parameters:

  • min (int): Lower bound (inclusive)
  • max (int): Upper bound (inclusive)

Returns: int


Development

Building from source

# Install maturin and pytest
uv pip install maturin pytest

# Build and install locally
maturin develop

# Run tests
cargo test
pytest
  • php5rand - the PHP5 rand()/srand() and mt_rand()/mt_srand() reimplementations this project depends on

License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for rust_neotools 0.0.8

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

Built distributions (wheels)

Table of built distributions (wheels) for rust_neotools 0.0.8
File Actions
rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details for rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_x86_64.whl
rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_i686.whl CPython 3.11 abi3 Linux musl 1.2+ x86-32 Details for rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_i686.whl
rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_armv7l.whl CPython 3.11 abi3 Linux musl 1.2+ ARMv7l Details for rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_armv7l.whl
rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details for rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_aarch64.whl
rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details for rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl CPython 3.11 abi3 Linux glibc 2.17+ IBM System/390x Details for rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl CPython 3.11 abi3 Linux glibc 2.17+ PowerPC 64-le Details for rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl CPython 3.11 abi3 Linux glibc 2.17+ PowerPC 64-be Details for rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.11 abi3 Linux glibc 2.17+ ARMv7l Details for rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details for rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
rust_neotools-0.0.8-cp311-abi3-manylinux_2_12_i686.manylinux2010_i686.whl CPython 3.11 abi3 Linux glibc 2.12+ x86-32 Details for rust_neotools-0.0.8-cp311-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
rust_neotools-0.0.8-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details for rust_neotools-0.0.8-cp311-abi3-macosx_10_12_x86_64.whl
rust_neotools-0.0.8-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.11 abi3 macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 Details for rust_neotools-0.0.8-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Total release size: 5.2 MB

Release files / rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_x86_64.whl
Size 514.1 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
305ca0906b7a1e0a9df3cdec059cc4b0a141b8f4aef782aa6b740c9035a21cc8
BLAKE2b-256 checksum
How to use checksums
337b87e66d883bb0e4029212a1ea45ce9cef1b835cbcafc0ca4482818eb01d7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_i686.whl

Download URL rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_i686.whl
Size 546.6 kB
Tags CPython 3.11 Linux musl 1.2+ x86-32 abi3
SHA-256 checksum
How to use checksums
e678c784944dddd8ae9c8d7089124c2ea595ec113c120d96b7c30d73e2137d93
BLAKE2b-256 checksum
How to use checksums
94d4960ad617059e10a99af624956f2c52351ed8670130cf1ea5c9b59c62d31c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_armv7l.whl

Download URL rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_armv7l.whl
Size 591.6 kB
Tags CPython 3.11 Linux musl 1.2+ ARMv7l abi3
SHA-256 checksum
How to use checksums
d69cacebe5bdcbf5a23b1e8ca895dc9344f69e86a806f36be73e27a7a83050fc
BLAKE2b-256 checksum
How to use checksums
bb4c0931a62307e07194840ce07a7a3eaca3bd84a9496bbcf4766303e5f5aa64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_aarch64.whl

Download URL rust_neotools-0.0.8-cp311-abi3-musllinux_1_2_aarch64.whl
Size 482.0 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
4f52d9ea4d9fdb611f01a041415ed72082589ada1879b012a8cf2f3e6f8c74a6
BLAKE2b-256 checksum
How to use checksums
3e3cd5278ff052534c4aed4e9dcb661d085e5ed9c5dd7472f83db4fadf6892bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 303.7 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
ae48ab0baf74869efffc66d75ca204304af1142c999c8cdf3c0c2a152d1727b6
BLAKE2b-256 checksum
How to use checksums
4c95a577e27f2c04079453e61f7417d750bba6ed2ccc57dbc389b1d113477aa2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl

Download URL rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 339.7 kB
Tags CPython 3.11 Linux glibc 2.17+ IBM System/390x abi3
SHA-256 checksum
How to use checksums
fb75cd666fb7af4b0beedf2455e6d83498da229ded57c0ad83ebec47c7e44b70
BLAKE2b-256 checksum
How to use checksums
1dbc197d17e1a5b2399e29b0b64b58a53433716f6ef149523cacb7d531d81a57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 335.7 kB
Tags CPython 3.11 Linux glibc 2.17+ PowerPC 64-le abi3
SHA-256 checksum
How to use checksums
ce1c9c3b91a2c3d2a97d019e185e07a869fa726f2b97307d4bf52483b3466266
BLAKE2b-256 checksum
How to use checksums
a7b95579a6b2c50b22d52e08ed0c1e2d882952e7bb7a6a0b12669048901db310
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl

Download URL rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Size 340.1 kB
Tags CPython 3.11 Linux glibc 2.17+ PowerPC 64-be abi3
SHA-256 checksum
How to use checksums
540e2b49c02a0dafe22a18577f37573787fcd4cb878457b3104fb018649db22d
BLAKE2b-256 checksum
How to use checksums
a0a8762990153c47a1c6335bc016c824f132c2d0074eb6f2f3304c1b43e2afff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 315.8 kB
Tags CPython 3.11 Linux glibc 2.17+ ARMv7l abi3
SHA-256 checksum
How to use checksums
2f1a9eb0a2e2defe233f18b996861973f410fbca7f05976fa2797dbc4b387107
BLAKE2b-256 checksum
How to use checksums
641afd09164f7a56af9a989627dc8dd12fbdf14cbe72495306f44ab71e80b40f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL rust_neotools-0.0.8-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 303.8 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
9d96f3ab707185974302225ebbd7ec6c6c3405265f7af22d083ef69a01e8587d
BLAKE2b-256 checksum
How to use checksums
91c017c6874b6f27328bc0118f78527b22cdab97c7e90695d76708f22b3fb4fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-manylinux_2_12_i686.manylinux2010_i686.whl

Download URL rust_neotools-0.0.8-cp311-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Size 329.5 kB
Tags CPython 3.11 Linux glibc 2.12+ x86-32 abi3
SHA-256 checksum
How to use checksums
4eb582508b41484b0cce8c5d6feac02856cef89d4ddfbc2b31d762db103259e3
BLAKE2b-256 checksum
How to use checksums
c50eebdda3253010858156a78c6887c2c1282e4a2bf9f95595468fe93b5b1d63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-macosx_10_12_x86_64.whl

Download URL rust_neotools-0.0.8-cp311-abi3-macosx_10_12_x86_64.whl
Size 278.9 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
1e8b133db5bf0aca56c0bf2703cbbdd7cb644066a8d86878734b2418b635c2bc
BLAKE2b-256 checksum
How to use checksums
5641e5681229090539195b73f067c737cff5412a63f0596043bcc8153fbb7245
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rust_neotools-0.0.8-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL rust_neotools-0.0.8-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 542.2 kB
Tags CPython 3.11 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
200c4290d61d04f91d92f2ddea0bf6ae301d5eb8744297ccd2a43d893e79ca6d
BLAKE2b-256 checksum
How to use checksums
9eb17700aa0b8523b99a171e8d1b3a86fda1acd98e9d2ea0fdbcf9a1c558398b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for rust_neotools 0.0.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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