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, )