Skip to content

Commit e54d98e

Browse files
committed
some additions
1 parent dafd8f2 commit e54d98e

File tree

3 files changed

+33
-17
lines changed

3 files changed

+33
-17
lines changed

setup.cfg

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ package_dir=
2525
=src
2626
packages = find:
2727
install_requires=
28+
requests
29+
appdirs
30+
filelock
2831

2932
[options.extras_require]
3033
docs =

src/iterative_telemetry/__init__.py

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,36 @@
33
import json
44
import logging
55
import os
6+
import platform
67
import subprocess
8+
import sys
9+
import uuid
10+
from functools import lru_cache
711
from threading import Thread
8-
from typing import Any, Dict
12+
from typing import Any, Callable, Dict, Union
913

14+
import distro
1015
import requests
1116
from appdirs import user_config_dir
1217
from filelock import FileLock, Timeout
1318

1419
logger = logging.getLogger(__name__)
15-
TOKEN = "s2s.9vdp1745vpkibkcxznsfus.cgsh70aoy3m39bfuey6shn"
16-
URL = "https://telemetry.mlem.ai/api/v1/s2s/event?ip_policy=strict"
20+
TOKEN = "s2s.jtyjusrpsww4k9b76rrjri.bl62fbzrb7nd9n6vn5bpqt"
21+
URL = (
22+
"https://iterative-telemetry.herokuapp.com"
23+
"/api/v1/s2s/event?ip_policy=strict"
24+
)
25+
26+
DO_NOT_TRACK_ENV = "ITERATIVE_DO_NOT_TRACK"
27+
DO_NOT_TRACK_VALUE = "do-not-track"
1728

1829

1930
class IterativeTelemetryLogger:
2031
def __init__(
2132
self,
2233
tool_name,
2334
tool_version,
24-
enabled: bool = True,
35+
enabled: Union[bool, Callable] = True,
2536
url=URL,
2637
token=TOKEN,
2738
):
@@ -36,25 +47,33 @@ def send_cli_call(self, cmd_name: str, **kwargs):
3647

3748
def send_event(
3849
self,
39-
event_type: str,
40-
event_name: str,
50+
interface: str,
51+
action: str,
4152
use_thread: bool = False,
4253
use_daemon: bool = True,
4354
**kwargs,
4455
):
4556
self.send(
46-
{"interface": event_type, "action": event_name, "extra": kwargs},
57+
{"interface": interface, "action": action, "extra": kwargs},
4758
use_thread=use_thread,
4859
use_daemon=use_daemon,
4960
)
5061

62+
def is_enabled(self):
63+
return (
64+
os.environ.get(DO_NOT_TRACK_ENV, None) is None and self.enabled()
65+
if callable(self.enabled)
66+
else self.enabled
67+
and _find_or_create_user_id() != DO_NOT_TRACK_VALUE
68+
)
69+
5170
def send(
5271
self,
5372
payload: Dict[str, Any],
5473
use_thread: bool = False,
5574
use_daemon: bool = True,
5675
):
57-
if not self.enabled:
76+
if not self.is_enabled():
5877
return
5978
payload.update(self._runtime_info())
6079
if use_thread and use_daemon:
@@ -69,8 +88,6 @@ def send(
6988
impl(payload)
7089

7190
def _send_daemon(self, payload):
72-
import sys
73-
7491
cmd = (
7592
f"import requests;requests.post('{self.url}',"
7693
f"params={{'token':'{self.token}'}},json={payload})"
@@ -121,6 +138,7 @@ def _runtime_info(self):
121138
return {
122139
"tool_name": self.tool_name,
123140
"tool_version": self.tool_version,
141+
# "tool_source": self.tool_source, # TODO
124142
# "scm_class": _scm_in_use(),
125143
**_system_info(),
126144
"user_id": _find_or_create_user_id(),
@@ -129,11 +147,6 @@ def _runtime_info(self):
129147

130148

131149
def _system_info():
132-
import platform
133-
import sys
134-
135-
import distro
136-
137150
system = platform.system()
138151

139152
if system == "Windows":
@@ -162,16 +175,16 @@ def _system_info():
162175
raise NotImplementedError
163176

164177

178+
@lru_cache
165179
def _find_or_create_user_id():
166180
"""
167181
The user's ID is stored on a file under the global config directory.
168182
The file should contain a JSON with a "user_id" key:
169183
{"user_id": "16fd2706-8baf-433b-82eb-8c7fada847da"}
170184
IDs are generated randomly with UUID.
171185
"""
172-
import uuid
173186

174-
config_dir = user_config_dir("mlem", "Iterative")
187+
config_dir = user_config_dir("telemetry", "iterative")
175188
fname = os.path.join(config_dir, "user_id")
176189
lockfile = os.path.join(config_dir, "user_id.lock")
177190

src/iterative_telemetry/py.typed

Whitespace-only changes.

0 commit comments

Comments
 (0)