Python bindings for the vacant Rust engine — domain availability via authoritative DNS.
Project description
vacant — domain availability via authoritative DNS
Python bindings for the vacant Rust engine. Asks the authoritative TLD nameservers directly instead of WHOIS — fast, no rate limits, no waiting.
The wheel ships the same Rust engine compiled in, with a small Python facade and a vacant CLI entry point. Lockstep-versioned with the vacant crate: vacant 0.3.x (Python) wraps vacant 0.3.x (Rust) exactly.
Install
Pick the path that matches how you'll use it:
CLI
brew install alltuner/tap/vacant # macOS, Linux — native Rust binary
cargo install vacant # any platform with a Rust toolchain
uvx vacant google.com # one-shot, no install (Python wheel)
The brew / cargo paths give you the native Rust binary (instant startup, ideal for daily use). uvx runs the Python wheel — convenient when you don't want to install anything, slightly slower to start because it boots a Python interpreter.
Library
pip install vacant
# or with uv:
uv add vacant
from vacant import check_many, Status
results = check_many(["example.com", "anthropic.com", "totally-made-up-zxqv.cat"])
for r in results:
print(r.domain, r.status.value, r.detail)
The on-disk SQLite cache is shared with the Rust CLI — runs against the same ~/.cache/vacant/results.db, so the brew binary and a Python script see each other's results.
from vacant import DiskCache, check_many
cache = DiskCache() # default ~/.cache/vacant/results.db
results = check_many(["example.com"], cache=cache)
How it works
vacant.check_many calls into the Rust engine via PyO3 (vacant._core). The engine:
- Normalizes the input.
- Looks up cache; returns hits immediately.
- Runs a per-zone precheck (length, charset, reserved labels) from the bundled
rules.toml. - For inputs that pass, asks the parent zone's NS directly. NXDOMAIN → available; delegation → registered; ambiguous answers fall back to RDAP.
Cache shape, rules format, and verdict semantics are all the engine's — see alltuner/vacant for the source of truth.
Develop
The Python package lives in the alltuner/vacant monorepo alongside the Rust engine, so dev commands run from the repo root:
just # menu
just py-develop # build the maturin extension into the local venv
just py-check # ruff + pytest
just py-wheel # build a release wheel locally
License
MIT — see ../LICENSE.
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vacant-0.4.1.tar.gz.
File metadata
- Download URL: vacant-0.4.1.tar.gz
- Upload date:
- Size: 113.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8bc8d951d1e74c4d38340793c65882052f9036663eeb6ee89d93333f8ad76c4
|
|
| MD5 |
731efc9c926c042ffdd03b8772f4cc84
|
|
| BLAKE2b-256 |
bcb2fc4c8c41dd5aaa214b26463b10a5f4ed7d18edf300d4fbe2c22ab46f8bfe
|
Provenance
The following attestation bundles were made for vacant-0.4.1.tar.gz:
Publisher:
release.yml on alltuner/vacant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vacant-0.4.1.tar.gz -
Subject digest:
b8bc8d951d1e74c4d38340793c65882052f9036663eeb6ee89d93333f8ad76c4 - Sigstore transparency entry: 1437143695
- Sigstore integration time:
-
Permalink:
alltuner/vacant@f88739d424325a6f076da0c4094dc9673336a27a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alltuner
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f88739d424325a6f076da0c4094dc9673336a27a -
Trigger Event:
push
-
Statement type:
File details
Details for the file vacant-0.4.1-cp311-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: vacant-0.4.1-cp311-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.1 MB
- Tags: CPython 3.11+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e06586702e1c2af4f80ba20ed8b46c7a5ad9c3bedf2a508f85836ac51177b04d
|
|
| MD5 |
26df4d756ca0819be1f6968ec380d8bf
|
|
| BLAKE2b-256 |
ec1c58aa0d0f24a86458ffb5afb24ad3fa20eff244427450f4bd351154a89a15
|
Provenance
The following attestation bundles were made for vacant-0.4.1-cp311-abi3-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on alltuner/vacant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vacant-0.4.1-cp311-abi3-manylinux_2_28_x86_64.whl -
Subject digest:
e06586702e1c2af4f80ba20ed8b46c7a5ad9c3bedf2a508f85836ac51177b04d - Sigstore transparency entry: 1437143707
- Sigstore integration time:
-
Permalink:
alltuner/vacant@f88739d424325a6f076da0c4094dc9673336a27a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alltuner
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f88739d424325a6f076da0c4094dc9673336a27a -
Trigger Event:
push
-
Statement type:
File details
Details for the file vacant-0.4.1-cp311-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: vacant-0.4.1-cp311-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 5.0 MB
- Tags: CPython 3.11+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39df176bae479f88eb541d6215bcbc1f4e860ed99e0e00a135213c787d8d1090
|
|
| MD5 |
5e85af9b65fef200f6cae15b61a1c861
|
|
| BLAKE2b-256 |
e15ccd581d614a4248949b7d4b771cfd6b81b6673c2e501555f240f6460b5cb0
|
Provenance
The following attestation bundles were made for vacant-0.4.1-cp311-abi3-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on alltuner/vacant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vacant-0.4.1-cp311-abi3-manylinux_2_28_aarch64.whl -
Subject digest:
39df176bae479f88eb541d6215bcbc1f4e860ed99e0e00a135213c787d8d1090 - Sigstore transparency entry: 1437143697
- Sigstore integration time:
-
Permalink:
alltuner/vacant@f88739d424325a6f076da0c4094dc9673336a27a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alltuner
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f88739d424325a6f076da0c4094dc9673336a27a -
Trigger Event:
push
-
Statement type:
File details
Details for the file vacant-0.4.1-cp311-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: vacant-0.4.1-cp311-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.6 MB
- Tags: CPython 3.11+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d989c67082d899910874fc1bf7cf7ef72d68fe49ffb6c47bcc2777f3dbb603d0
|
|
| MD5 |
beb00d43c131a5e453bead8907e450fc
|
|
| BLAKE2b-256 |
526c5bfce7be21715fe0b2a7ec424dace6dc6106157024dd151630fdd0550bbe
|
Provenance
The following attestation bundles were made for vacant-0.4.1-cp311-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on alltuner/vacant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vacant-0.4.1-cp311-abi3-macosx_11_0_arm64.whl -
Subject digest:
d989c67082d899910874fc1bf7cf7ef72d68fe49ffb6c47bcc2777f3dbb603d0 - Sigstore transparency entry: 1437143713
- Sigstore integration time:
-
Permalink:
alltuner/vacant@f88739d424325a6f076da0c4094dc9673336a27a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alltuner
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f88739d424325a6f076da0c4094dc9673336a27a -
Trigger Event:
push
-
Statement type:
File details
Details for the file vacant-0.4.1-cp311-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: vacant-0.4.1-cp311-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.11+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96f8895ead1abc1fc54b4e05b22c12ee4f584b4d83abd880794bbf029f5018c9
|
|
| MD5 |
206c1e12a5ee06b235e731fdf0c9c43b
|
|
| BLAKE2b-256 |
5c1f5e9a5a24ae83c0b1a52ee334c049b25f646076adc8a25cf1f6b547e02ab8
|
Provenance
The following attestation bundles were made for vacant-0.4.1-cp311-abi3-macosx_10_12_x86_64.whl:
Publisher:
release.yml on alltuner/vacant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vacant-0.4.1-cp311-abi3-macosx_10_12_x86_64.whl -
Subject digest:
96f8895ead1abc1fc54b4e05b22c12ee4f584b4d83abd880794bbf029f5018c9 - Sigstore transparency entry: 1437143703
- Sigstore integration time:
-
Permalink:
alltuner/vacant@f88739d424325a6f076da0c4094dc9673336a27a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alltuner
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f88739d424325a6f076da0c4094dc9673336a27a -
Trigger Event:
push
-
Statement type: