Check if telemetry is enabled, following precedence rules.
()
| 92 | |
| 93 | |
| 94 | def is_enabled() -> bool: |
| 95 | """Check if telemetry is enabled, following precedence rules.""" |
| 96 | # Layer 1: DO_NOT_TRACK (universal standard, always wins) |
| 97 | if os.environ.get("DO_NOT_TRACK", "").strip() == "1": |
| 98 | return False |
| 99 | |
| 100 | # Layer 2: Explicit env var |
| 101 | env = os.environ.get("UNCOMMON_ROUTE_TELEMETRY", "").strip().lower() |
| 102 | if env in ("on", "true", "1", "yes"): |
| 103 | return True |
| 104 | if env in ("off", "false", "0", "no"): |
| 105 | return False |
| 106 | |
| 107 | # Layer 3: Config file (explicit user choice — respected even in non-TTY) |
| 108 | config = _load_config() |
| 109 | telemetry_config = config.get("telemetry", {}) |
| 110 | if isinstance(telemetry_config, dict) and "enabled" in telemetry_config: |
| 111 | return bool(telemetry_config["enabled"]) |
| 112 | |
| 113 | # Layer 4: Non-interactive → off (only affects auto-prompt, not explicit config) |
| 114 | if not sys.stdin.isatty() or os.environ.get("CI"): |
| 115 | return False |
| 116 | |
| 117 | # Layer 5: Not yet decided |
| 118 | return False |
| 119 | |
| 120 | |
| 121 | def prompt_if_needed() -> bool: |
no test coverage detected