Show opt-in prompt if user hasn't decided yet. Returns enabled state.
()
| 119 | |
| 120 | |
| 121 | def prompt_if_needed() -> bool: |
| 122 | """Show opt-in prompt if user hasn't decided yet. Returns enabled state.""" |
| 123 | # Skip if already decided |
| 124 | config = _load_config() |
| 125 | if "telemetry" in config: |
| 126 | return config.get("telemetry", {}).get("enabled", False) |
| 127 | |
| 128 | # Skip if non-interactive |
| 129 | if not sys.stdin.isatty() or os.environ.get("CI"): |
| 130 | return False |
| 131 | |
| 132 | # Skip if env var is set |
| 133 | env = os.environ.get("UNCOMMON_ROUTE_TELEMETRY", "").strip() |
| 134 | if env: |
| 135 | return env.lower() in ("on", "true", "1", "yes") |
| 136 | |
| 137 | if os.environ.get("DO_NOT_TRACK", "").strip() == "1": |
| 138 | return False |
| 139 | |
| 140 | # Prompt |
| 141 | print(""" |
| 142 | ──────────────────────────────────────────────────── |
| 143 | Help improve UncommonRoute's routing accuracy by |
| 144 | sharing pseudonymous routing metadata? |
| 145 | |
| 146 | ✓ Routing predictions, model selections, outcomes |
| 147 | ✗ NO prompts, responses, API keys, or personal info |
| 148 | |
| 149 | Details: https://github.com/CommonstackAI/UncommonRoute/blob/main/TELEMETRY.md |
| 150 | ────────────────────────────────────────────────────""") |
| 151 | try: |
| 152 | answer = input("Share pseudonymous routing data? [y/N]: ").strip().lower() |
| 153 | except (EOFError, KeyboardInterrupt): |
| 154 | answer = "n" |
| 155 | |
| 156 | enabled = answer in ("y", "yes") |
| 157 | config["telemetry"] = {"enabled": enabled} |
| 158 | _save_config(config) |
| 159 | |
| 160 | if enabled: |
| 161 | print(" Telemetry enabled. Disable anytime: uncommon-route telemetry disable") |
| 162 | else: |
| 163 | print(" Telemetry disabled. Enable anytime: uncommon-route telemetry enable") |
| 164 | |
| 165 | return enabled |
| 166 | |
| 167 | |
| 168 | def enable() -> None: |
nothing calls this directly
no test coverage detected