Skip to content

Commit 22bc162

Browse files
authored
Allow users to opt out for telemetry (#42)
We were always sending the telemetry headers but not collecting it in the server. We now started collecting it, so we should give users a way to opt out of it.
1 parent ced4d90 commit 22bc162

File tree

2 files changed

+35
-15
lines changed

2 files changed

+35
-15
lines changed

upstash_vector/client.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,12 @@ class Index(IndexOperations):
3030
"""
3131

3232
def __init__(
33-
self, url: str, token: str, retries: int = 3, retry_interval: float = 1.0
33+
self,
34+
url: str,
35+
token: str,
36+
retries: int = 3,
37+
retry_interval: float = 1.0,
38+
allow_telemetry: bool = True,
3439
):
3540
self._url = url
3641
self._client = httpx.Client(
@@ -41,7 +46,7 @@ def __init__(
4146
)
4247
self._retries = retries
4348
self._retry_interval = retry_interval
44-
self._headers = generate_headers(token)
49+
self._headers = generate_headers(token, allow_telemetry)
4550

4651
def _execute_request(self, payload: Any = "", path: str = ""):
4752
url_with_path = f"{self._url}{path}"
@@ -55,7 +60,12 @@ def _execute_request(self, payload: Any = "", path: str = ""):
5560
)
5661

5762
@classmethod
58-
def from_env(cls, retries: int = 3, retry_interval: float = 1.0) -> "Index":
63+
def from_env(
64+
cls,
65+
retries: int = 3,
66+
retry_interval: float = 1.0,
67+
allow_telemetry: bool = True,
68+
) -> "Index":
5969
"""
6070
Load the credentials from environment, and returns a client.
6171
"""
@@ -65,6 +75,7 @@ def from_env(cls, retries: int = 3, retry_interval: float = 1.0) -> "Index":
6575
environ["UPSTASH_VECTOR_REST_TOKEN"],
6676
retries,
6777
retry_interval,
78+
allow_telemetry,
6879
)
6980

7081

@@ -92,9 +103,9 @@ def __init__(
92103
token: str,
93104
retries: int = 3,
94105
retry_interval: float = 1.0,
106+
allow_telemetry: bool = True,
95107
):
96108
self._url = url
97-
self._headers = generate_headers(token)
98109
self._client = httpx.AsyncClient(
99110
timeout=httpx.Timeout(
100111
timeout=600.0,
@@ -103,6 +114,7 @@ def __init__(
103114
)
104115
self._retries = retries
105116
self._retry_interval = retry_interval
117+
self._headers = generate_headers(token, allow_telemetry)
106118

107119
async def _execute_request_async(self, payload: Any = "", path: str = ""):
108120
url_with_path = f"{self._url}{path}"
@@ -116,7 +128,12 @@ async def _execute_request_async(self, payload: Any = "", path: str = ""):
116128
)
117129

118130
@classmethod
119-
def from_env(cls, retries: int = 3, retry_interval: float = 1.0) -> "AsyncIndex":
131+
def from_env(
132+
cls,
133+
retries: int = 3,
134+
retry_interval: float = 1.0,
135+
allow_telemetry: bool = True,
136+
) -> "AsyncIndex":
120137
"""
121138
Load the credentials from environment, and returns a client.
122139
"""
@@ -126,4 +143,5 @@ def from_env(cls, retries: int = 3, retry_interval: float = 1.0) -> "AsyncIndex"
126143
environ["UPSTASH_VECTOR_REST_TOKEN"],
127144
retries,
128145
retry_interval,
146+
allow_telemetry,
129147
)

upstash_vector/http.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,23 @@
1010
from upstash_vector.errors import UpstashError
1111

1212

13-
def generate_headers(token) -> Dict[str, str]:
13+
def generate_headers(token: str, allow_telemetry: bool) -> Dict[str, str]:
1414
headers = {
1515
"Authorization": f"Bearer {token}",
16-
"Upstash-Telemetry-Sdk": f"upstash-vector-py@v{__version__}",
17-
"Upstash-Telemetry-Runtime": f"python@v{python_version()}",
1816
}
1917

20-
if os.getenv("VERCEL"):
21-
platform = "vercel"
22-
elif os.getenv("AWS_REGION"):
23-
platform = "aws"
24-
else:
25-
platform = "unknown"
18+
if allow_telemetry:
19+
headers["Upstash-Telemetry-Sdk"] = f"upstash-vector-py@v{__version__}"
20+
headers["Upstash-Telemetry-Runtime"] = f"python@v{python_version()}"
2621

27-
headers["Upstash-Telemetry-Platform"] = platform
22+
if os.getenv("VERCEL"):
23+
platform = "vercel"
24+
elif os.getenv("AWS_REGION"):
25+
platform = "aws"
26+
else:
27+
platform = "unknown"
28+
29+
headers["Upstash-Telemetry-Platform"] = platform
2830

2931
return headers
3032

0 commit comments

Comments
 (0)