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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e058ec4370970c4da0244a7daddb9aa3d9b085db302875313553e769310bb3a |
|
MD5 | 7fc6a76d824bb092e5ab04109ac6806b |
|
BLAKE2b-256 | f5c65376cf45c548e6f754641fc0a4acb67d01103c9d9897f4085c19c9fcc3f5 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 113bb8c302184e2cd0d92f356c81e92f1722b44f2f4c1f773700554b86a11f03 |
|
MD5 | 8d437cfac76801f0c3b84df952afc989 |
|
BLAKE2b-256 | 9d0c49f50bce1ed959611b806a20f85a6860a877f6e827a7a4884c1d7f9ee97c |