Skip to main content

Python bindings for the vacant Rust engine — domain availability via authoritative DNS.

Project description

vacant — domain availability via authoritative DNS

PyPI crates.io

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:

  1. Normalizes the input.
  2. Looks up cache; returns hits immediately.
  3. Runs a per-zone precheck (length, charset, reserved labels) from the bundled rules.toml.
  4. 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

just              # menu
just develop      # build the maturin extension into the local venv
just check        # ruff + pytest
just 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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

vacant-0.3.6-cp311-abi3-manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ x86-64

vacant-0.3.6-cp311-abi3-manylinux_2_28_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

vacant-0.3.6-cp311-abi3-macosx_11_0_arm64.whl (4.6 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

vacant-0.3.6-cp311-abi3-macosx_10_12_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

Details for the file vacant-0.3.6-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vacant-0.3.6-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cbaf5c57b1411fcdbe957b6815c9e8b6ed2482aebb182fb2591c3a2a55958b1e
MD5 cd583879b433619a43735c134811c8cb
BLAKE2b-256 e331af517388524abd3c087b3921d3e5bdba6432cc815a9f5111de7774bea78f

See more details on using hashes here.

Provenance

The following attestation bundles were made for vacant-0.3.6-cp311-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on alltuner/vacant-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vacant-0.3.6-cp311-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vacant-0.3.6-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d88028056ad2f801a8b6673354a47582344ebfeb1630ed09ee4cb095def38610
MD5 81c3baebeb04e02fc1fd1646db426039
BLAKE2b-256 838d575e1e021c3a689fccc98c389b0861d59ec4807c7f69405b72f71e084d2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for vacant-0.3.6-cp311-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yml on alltuner/vacant-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vacant-0.3.6-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vacant-0.3.6-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32472d81aa602b3981d634befcd8576cf894af5582e0c6bc65e0a9e64b9a6ad1
MD5 e91ae2d409674abd17763118129fb0e2
BLAKE2b-256 0bca1ba7213217f180b9229cebc2844cbca42bc8715e44225bcf9c3974e962d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for vacant-0.3.6-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on alltuner/vacant-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vacant-0.3.6-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for vacant-0.3.6-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f1848d13fa78b6f32a76ad6f6354aa50a48d7f6f39eb63060edd31a4359a92ce
MD5 8b2bd3fe12e1e5a4ec6a52cb1a72ac71
BLAKE2b-256 8ae3a073830bde6bb1efb33ee9910c2e90a833827971cbf11a7130659e567376

See more details on using hashes here.

Provenance

The following attestation bundles were made for vacant-0.3.6-cp311-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on alltuner/vacant-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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