Skip to main content

Rabbit BigQuery Job Optimizer Python Client

This is the official Python client library for the Rabbit BigQuery Job Optimizer API.

Installation

pip install rabbit-bq-job-optimizer

Usage

from rabbit_bq_job_optimizer import RabbitBQJobOptimizer, OptimizationConfig

# Initialize the client
client = RabbitBQJobOptimizer(
    api_key="your-api-key"
    # base_url is optional - will use production endpoint by default
    # timeout is optional - defaults to 5 seconds
)

# Optimize a BigQuery job configuration
job_config = {
    "configuration": {
        "query": {
            "query": "SELECT * FROM my_table",
            "useLegacySql": False,
            "priority": "INTERACTIVE"
        }
    }
}

optimization_config = OptimizationConfig(
    type="reservation_assignment",
    config={
        "defaultPricingMode": "on_demand",
        "reservationIds": [
            "my-project:US.my-reservation-us",
            "my-project:EU.my-reservation-eu"
        ]
    }
)

# Optimize the job
result = client.optimize_job(
    configuration=job_config,
    enabledOptimizations=[optimization_config]
)

# Access the optimized configuration
optimized_config = result.optimizedJob

# Access optimization results
for optimization in result.optimizationResults:
    print(f"Type: {optimization.type}")
    print(f"Applied: {optimization.performed}")
    print(f"Estimated Savings: {optimization.estimatedSavings}")

Error Handling

The client raises exceptions for API errors:

from rabbit_bq_job_optimizer import RabbitBQJobOptimizerError

try:
    result = client.optimize_job(job_config)
except RabbitBQJobOptimizerError as e:
    print(f"Error: {e.message}")
    print(f"Status Code: {e.status_code}")

Configuration

Authentication

The API key is required to use the client. It can be obtained from the Rabbit team by contacting success@followrabbit.ai. The base URL is optional and defaults to the production endpoint.

There are three ways to configure authentication:

  1. Pass API key directly to the constructor (uses default production endpoint):
from rabbit_bq_job_optimizer import RabbitBQJobOptimizer

client = RabbitBQJobOptimizer(
    api_key="your-api-key"
)
  1. Pass both API key and custom base URL:
from rabbit_bq_job_optimizer import RabbitBQJobOptimizer

client = RabbitBQJobOptimizer(
    api_key="your-api-key",
    base_url="https://your-custom-endpoint.com"
)
  1. Set environment variables:
export RABBIT_API_KEY="your-api-key"
export RABBIT_API_BASE_URL="your-base-url"  # Optional - will use default if not set

Then initialize the client without parameters:

from rabbit_bq_job_optimizer import RabbitBQJobOptimizer

client = RabbitBQJobOptimizer()  # Will automatically use environment variables

The environment variables are:

  • RABBIT_API_KEY: Your Rabbit API key (required)
  • RABBIT_API_BASE_URL: The base URL for the Rabbit API (optional, defaults to production endpoint)

Request Timeout

The client includes a configurable request timeout to prevent indefinite hangs. By default, requests will timeout after 5 seconds.

You can customize the timeout when initializing the client:

from rabbit_bq_job_optimizer import RabbitBQJobOptimizer

# Use default 5 second timeout
client = RabbitBQJobOptimizer(api_key="your-api-key")

# Use custom timeout (in seconds)
client = RabbitBQJobOptimizer(
    api_key="your-api-key",
    timeout=30  # 30 seconds
)

If the API doesn't respond within the specified timeout, a RabbitBQJobOptimizerError will be raised.

Development

To install the package in development mode:

pip install -e .

License

Apache License 2.0

Release files for rabbit-bq-job-optimizer 0.1.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rabbit-bq-job-optimizer 0.1.19
File Size Uploaded
rabbit_bq_job_optimizer-0.1.19.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rabbit-bq-job-optimizer 0.1.19
File Interpreter ABI Platform
rabbit_bq_job_optimizer-0.1.19-py3-none-any.whl Python 3 none any Details

Total release size: 19.4 kB

Release files / rabbit_bq_job_optimizer-0.1.19.tar.gz

Download URL rabbit_bq_job_optimizer-0.1.19.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
70fdbd46cd20d3899ebaa04a2dd8eb8142870a622f3a550e96af0a16f947bf1d
BLAKE2b-256 checksum
How to use checksums
1678cacef78ff66ab33dfea291151b9ec9d8bdf22b950c9eafc666643d523c2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / rabbit_bq_job_optimizer-0.1.19-py3-none-any.whl

Download URL rabbit_bq_job_optimizer-0.1.19-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
15c509a9f37fa4679344edc0c92157140749dbca7f70026ee8e8899071ec709d
BLAKE2b-256 checksum
How to use checksums
5ef262c229be7a952f48d491b755c97bd3bb7043426447d6aa1f2f6210d993b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

0.1.19 This release

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page