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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file choixpeau-0.0.9.tar.gz.

File metadata

  • Download URL: choixpeau-0.0.9.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.5

File hashes

Hashes for choixpeau-0.0.9.tar.gz
Algorithm Hash digest
SHA256 0e058ec4370970c4da0244a7daddb9aa3d9b085db302875313553e769310bb3a
MD5 7fc6a76d824bb092e5ab04109ac6806b
BLAKE2b-256 f5c65376cf45c548e6f754641fc0a4acb67d01103c9d9897f4085c19c9fcc3f5

See more details on using hashes here.

File details

Details for the file choixpeau-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: choixpeau-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.5

File hashes

Hashes for choixpeau-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 113bb8c302184e2cd0d92f356c81e92f1722b44f2f4c1f773700554b86a11f03
MD5 8d437cfac76801f0c3b84df952afc989
BLAKE2b-256 9d0c49f50bce1ed959611b806a20f85a6860a877f6e827a7a4884c1d7f9ee97c

See more details on using hashes here.

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