Skip to content

Commit b6aade5

Browse files
authored
Introduce the send event once to the IterativeTelemetryLogger class (#59)
1 parent d236bd9 commit b6aade5

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

noxfile.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ def safety(session: nox.Session) -> None:
3838
session.install(".[dev]")
3939
session.install("safety")
4040
# Ignore https://github.com/pytest-dev/py/issues/287
41-
session.run("safety", "check", "--full-report", "-i", "51457")
41+
# Ignore https://bugzilla.redhat.com/show_bug.cgi?id=1677653#c4
42+
session.run(
43+
"safety", "check", "--full-report", "-i", "51457", "-i", "70612"
44+
)
4245

4346

4447
@nox.session

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ tests =
3636
pytest-cov==3.0.0
3737
pytest-mock==3.8.2
3838
pylint==2.15.0
39-
mypy==0.971
39+
mypy==1.11.2
4040
types-requests
4141
dev =
4242
%(tests)s

src/iterative_telemetry/__init__.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ class TelemetryEvent:
4040

4141

4242
class IterativeTelemetryLogger:
43+
# pylint: disable=R0902
44+
4345
def __init__(
4446
self,
4547
tool_name,
@@ -60,6 +62,8 @@ def __init__(
6062
logger.debug("IterativeTelemetryLogger is in debug mode")
6163
self._current_event: Optional[TelemetryEvent] = None
6264

65+
self._event_sent = False
66+
6367
def log_param(self, key: str, value):
6468
if self._current_event:
6569
self._current_event.kwargs[key] = value
@@ -79,8 +83,8 @@ def event_scope(
7983
def log(
8084
self,
8185
interface: str,
82-
action: str = None,
83-
skip: Union[bool, Callable[[TelemetryEvent], bool]] = None,
86+
action: Optional[str] = None,
87+
skip: Union[bool, Callable[[TelemetryEvent], bool], None] = None,
8488
):
8589
def decorator(func):
8690
@wraps(func)
@@ -110,14 +114,16 @@ def inner(*args, **kwargs):
110114

111115
return decorator
112116

113-
def send_cli_call(self, cmd_name: str, error: str = None, **kwargs):
117+
def send_cli_call(
118+
self, cmd_name: str, error: Optional[str] = None, **kwargs
119+
):
114120
self.send_event("cli", cmd_name, error=error, **kwargs)
115121

116122
def send_event(
117123
self,
118124
interface: str,
119125
action: str,
120-
error: str = None,
126+
error: Optional[str] = None,
121127
use_thread: bool = False,
122128
use_daemon: bool = True,
123129
**kwargs,
@@ -133,6 +139,28 @@ def send_event(
133139
use_daemon=use_daemon,
134140
)
135141

142+
def send_event_once(
143+
self,
144+
interface: str,
145+
action: str,
146+
error: Optional[str] = None,
147+
use_thread: bool = False,
148+
use_daemon: bool = True,
149+
**kwargs,
150+
):
151+
if self._event_sent:
152+
return
153+
154+
self.send_event(
155+
interface,
156+
action,
157+
error=error,
158+
use_thread=use_thread,
159+
use_daemon=use_daemon,
160+
**kwargs,
161+
)
162+
self._event_sent = True
163+
136164
def is_enabled(self):
137165
return (
138166
os.environ.get(DO_NOT_TRACK_ENV, None) is None and self.enabled()

0 commit comments

Comments
 (0)