In your tests and development environment we suggest hitting production turbopuffer for the best end to end testing. Since creating a namespace in turbopuffer is virtually free, you can create a namespace for each test with a random name, and simply delete it after the test. We recommend each developer has their own namespace for their dev namespaces.

import pytest
import os
import string
import random
import turbopuffer as tpuf
tpuf.api_key = os.environ["TURBOPUFFER_API_KEY"]

# Create a namespace for each test, and always delete it afterwards
def tpuf_ns():
    random_suffix = ''.join(random.choices(string.ascii_letters + string.digits, k=32))
    ns_name = f"test-{random_suffix}"
    ns = tpuf.Namespace(ns_name)
        yield ns
        except tpuf.error.APIError as e:
            if e.status_code != 404:  # If the error is not due to the namespace not existing

def test_query(tpuf_ns):
    tpuf_ns.upsert(ids=[1, 2], vectors=[[1, 1], [2, 2]])
    res = tpuf_ns.query(vector=[1.1, 1.1], distance_metric="euclidean_squared")
    assert res[0].id == 1

if __name__ == "__main__":
© 2024 turbopuffer Inc.
Privacy PolicyTerms of service