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
datetimefrom Python's standard library - Type-safe: Fully typed with
.pyistub 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 checkusername(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 checkusername(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 forenglish(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 searchusername(str): The Neopets username to search forstep(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
Links
- php5rand - the PHP5
rand()/srand()andmt_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)
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.