12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import logging
- import os
- import posthog
- from core.telemetry.events import BaseTelemetryEvent # type: ignore
- logger = logging.getLogger()
- class PosthogClient:
- """
- This is a write-only project API key, so it can only create new events. It can't
- read events or any of your other data stored with PostHog, so it's safe to use in public apps.
- """
- def __init__(
- self, api_key: str, enabled: bool = True, debug: bool = False
- ):
- self.enabled = enabled
- self.debug = debug
- if self.enabled:
- logger.info(
- "Initializing anonymized telemetry. To disable, set TELEMETRY_ENABLED=false in your environment."
- )
- posthog.project_api_key = api_key
- posthog.disable_geoip = False
- else:
- posthog.disabled = True
- if self.debug:
- posthog.debug = True
- logger.info(
- f"Posthog telemetry {'enabled' if self.enabled else 'disabled'}, debug mode {'on' if self.debug else 'off'}"
- )
- def capture(self, event: BaseTelemetryEvent):
- if self.enabled:
- posthog.capture(event.event_id, event.event_type, event.properties)
- # Initialize the telemetry client with a flag to enable or disable telemetry
- telemetry_enabled = os.getenv("TELEMETRY_ENABLED", "true").lower() in (
- "true",
- "1",
- "t",
- )
- debug_mode = os.getenv("DEBUG_MODE", "false").lower() in (
- "true",
- "1",
- "t",
- )
- telemetry_client = PosthogClient(
- api_key="phc_OPBbibOIErCGc4NDLQsOrMuYFTKDmRwXX6qxnTr6zpU",
- enabled=telemetry_enabled,
- )
|