v0.24.0
Breaking for provider extensions: an adapter must now declare its cost with is_free = True or an estimated_cost_units() override. An unpriced adapter is skipped rather than run when max_cost_per_url is set, instead of being forecast as free and billed anyway. Adapters are unaffected when no cost ceiling is configured.