Official Python SDK for ReleasePace — production-grade feature flags.
Zero required dependencies — uses Python stdlib urllib by default, requests optionally.
pip install releasepace
# With requests (recommended for production)
pip install "releasepace[requests]"from releasepace import ReleasePace
# Context manager (recommended — auto-disconnects)
with ReleasePace(api_key='rp_srv_xxxxxxxxxxxx', environment='production') as rp:
if rp.is_enabled('new-checkout'):
render_new_checkout()
label = rp.get_string('cta-label', default='Get started')
limit = rp.get_number('rate-limit', default=100)
cfg = rp.get_json('feature-config', default={})# settings.py / app factory — create once, reuse everywhere
import atexit
from releasepace import ReleasePace
rp = ReleasePace(api_key='rp_srv_xxx', environment='production')
rp.connect()
atexit.register(rp.disconnect)
# views.py
def checkout_view(request):
if rp.is_enabled('new-checkout'):
return render(request, 'checkout_v2.html')
return render(request, 'checkout.html')| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str |
required | SDK key from your dashboard |
environment |
str |
"production" |
Environment slug |
api_url |
str |
https://api-prod.releasepace.workers.dev |
Override API URL |
poll_interval |
float |
30.0 |
Seconds between polls |
context |
dict |
{} |
Evaluation context (userId, country…) |
on_update |
callable |
None |
Called with List[Flag] when flags change |
on_error |
callable |
None |
Called with Exception on fetch errors |
| Method | Returns | Description |
|---|---|---|
connect() |
ReleasePace |
Fetch flags, start background polling |
disconnect() |
None |
Stop polling |
refresh() |
None |
Force immediate re-fetch |
is_enabled(key) |
bool |
Check boolean flag |
get_string(key, default='') |
str |
Get string flag value |
get_number(key, default=0) |
float |
Get number flag value |
get_json(key, default=None) |
Any |
Get JSON flag value |
get_value(key, default=None) |
Any |
Get any flag value |
get_all_flags() |
List[Flag] |
Get all flags |
set_context(**kwargs) |
None |
Update evaluation context |
rp.set_context(userId='user-123')
if rp.is_enabled('new-feature'):
# Same user always gets same result (sticky bucketing)
...rp = ReleasePace(
api_key='rp_srv_xxx',
api_url='https://api.yourdomain.com',
)MIT © ReleasePace