Skip to content

Commit 17c5d9b

Browse files
authored
Support QDK_PYTHON_TELEMETRY environment variable (#2858)
1 parent c5e332e commit 17c5d9b

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

source/pip/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ BellState()
4444
This library sends telemetry. Minimal anonymous data is collected to help measure feature usage and performance.
4545
All telemetry events can be seen in the source file [telemetry_events.py](https://github.com/microsoft/qdk/tree/main/source/pip/qsharp/telemetry_events.py).
4646

47-
To disable sending telemetry from this package, set the environment variable `QSHARP_PYTHON_TELEMETRY=none`
47+
To disable sending telemetry from this package, set the environment variable `QDK_PYTHON_TELEMETRY=none`
4848

4949
## Support
5050

source/pip/qsharp/telemetry.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,21 @@
3939
or "https://westus2-2.in.applicationinsights.azure.com//v2.1/track"
4040
)
4141

42-
# Environment variables take precedence, else disable telemetry for non 'stable' builds
43-
QSHARP_PYTHON_TELEMETRY = (os.environ.get("QSHARP_PYTHON_TELEMETRY") or "").lower()
44-
TELEMETRY_ENABLED = (
45-
True
46-
if QSHARP_PYTHON_TELEMETRY in ["1", "true", "enabled"]
47-
else (
48-
False
49-
if QSHARP_PYTHON_TELEMETRY in ["0", "false", "disabled", "none"]
50-
else (not "dev" in QSHARP_VERSION)
51-
)
42+
# If explicitly disabled via either environment variable, disable telemetry. This takes precedence.
43+
# If explicitly enabled via either environment variable, enable telemetry.
44+
# Otherwise, enable telemetry only in release builds.
45+
_disable_values = {"0", "false", "disabled", "none"}
46+
_enable_values = {"1", "true", "enabled"}
47+
_env_values = {
48+
(os.environ.get("QSHARP_PYTHON_TELEMETRY") or "").lower(),
49+
(os.environ.get("QDK_PYTHON_TELEMETRY") or "").lower(),
50+
}
51+
52+
# `&` here is set intersection: it yields the common values between sets.
53+
# `not _env_values & _disable_values` is True iff no disable value is present.
54+
# `bool(_env_values & _enable_values)` is True iff any enable value is present.
55+
TELEMETRY_ENABLED = not _env_values & _disable_values and (
56+
bool(_env_values & _enable_values) or "dev" not in QSHARP_VERSION
5257
)
5358

5459
BATCH_INTERVAL_SEC = int(os.environ.get("QSHARP_PYTHON_TELEMETRY_INTERVAL") or 60)

0 commit comments

Comments
 (0)