burn/timeout (dead -1 vs timed, lazy expiry), usage counters, reuse cooldown,
and live pool management (replace/add/remove) for the rotating list source.
template/static sources treat these as no-ops that log a warning.
- canonical key (host:port:user:pass, or host:port auth-less) identifies a proxy
across every input shape (spec/Proxy/url/aiohttp/camoufox/socks5 dict); host is
lowercased (DNS-caseless), password included, 4-part split on first 3 colons so
colon passwords survive
- ProxiesExhaustedError when the whole pool is permanently dead
- cooldown soft (falls through to soonest-recovering, never raises); default 0 = off
- soonest-recovering fallthrough logs warning on a genuine burn, debug on cooldown
- {session} now 8-char alphanumeric (was 10-digit numeric); session_len default 8
- backward-compatible: a v0.1.0 manager (no burns, cooldown=0) is byte-for-byte
identical — sequential round-robin, next()->Proxy, get()->aiohttp dict, never raises
Signed-off-by: disqualifier <dev@disqualifier.me>
17 lines
400 B
TOML
17 lines
400 B
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "aioproxies"
|
|
version = "0.2.0"
|
|
description = "proxy parsing, formatting, health, and pool management for aiohttp/aioweb, camoufox, and socks5"
|
|
requires-python = ">=3.10"
|
|
dependencies = []
|
|
|
|
[project.optional-dependencies]
|
|
net = ["aiohttp>=3.9"]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/aioproxies"]
|