Skip to main content

Efficiently assign users to buckets.

Project description

choixpeau

Install

pip install choixpeau

Usage

from choixpeau import choixpeau

redis_config = {
    "host": "localhost
}

choixpeau = choixpeau.Choixpeau(
    redis_config=redis_config, 
    ab_test_ids=["poudlard"],
    buckets=["gryffondor", "poufsouffle", "serdaigle", "serpentard"] # ["A", "B"] by default
)

get

choixpeau.get("harrypotter")

# if the key already exists
> [(None, { "ab_test_group": "gryffondor", "created_at": "2021-01-29" }, "poudlard")] 

# if it does not
> [("ab:poudlard:harrypotter", { "ab_test_group": "gryffondor", "created_at": "2021-01-29" }, "poudlard")]

store

choixpeau.store(
    "ab:poudlard:harrypotter", 
    { "ab_test_group": "gryffondor", "created_at": "2021-01-29" }
)

FastAPI

from fastapi import FastAPI, Request, BackgroundTasks
from choixpeau import choixpeau
from choixpeau.decorators.fastapi import ab

app = fastapi.FastAPI()

redis_config = {
    "host": "localhost
}

@app.on_event("startup")
async def startup():
    # Initialize choixpeau at the app level
    app.state.choixpeau = choixpeau.Choixpeau(
        redis_config=redis_config, 
        ab_test_ids=["poudlard"],
        buckets=["gryffondor", "poufsouffle", "serdaigle", "serpentard"]
    )

@app.post("/")
@ab # requires the request body to have a user_id field
async def read_house(request: Request, background_tasks: BackgroundTasks):
    wizard = request.state.user # the user attribute is automatically added to the request

    if wizard["ab_test_group"] == "gryffondor":
        return { "message": "Welcome to Gryffondor!" }
    else:
        return { "message": "Welcome!" }

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

choixpeau-0.0.9.tar.gz (4.5 kB view hashes)

Uploaded Source

Built Distribution

choixpeau-0.0.9-py3-none-any.whl (4.7 kB view hashes)

Uploaded Python 3

Supported by

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