posthog.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import logging
  2. import os
  3. import posthog
  4. from core.telemetry.events import BaseTelemetryEvent # type: ignore
  5. logger = logging.getLogger()
  6. class PosthogClient:
  7. """
  8. This is a write-only project API key, so it can only create new events. It can't
  9. read events or any of your other data stored with PostHog, so it's safe to use in public apps.
  10. """
  11. def __init__(
  12. self, api_key: str, enabled: bool = True, debug: bool = False
  13. ):
  14. self.enabled = enabled
  15. self.debug = debug
  16. if self.enabled:
  17. logger.info(
  18. "Initializing anonymized telemetry. To disable, set TELEMETRY_ENABLED=false in your environment."
  19. )
  20. posthog.project_api_key = api_key
  21. posthog.disable_geoip = False
  22. else:
  23. posthog.disabled = True
  24. if self.debug:
  25. posthog.debug = True
  26. logger.info(
  27. f"Posthog telemetry {'enabled' if self.enabled else 'disabled'}, debug mode {'on' if self.debug else 'off'}"
  28. )
  29. def capture(self, event: BaseTelemetryEvent):
  30. if self.enabled:
  31. posthog.capture(event.event_id, event.event_type, event.properties)
  32. # Initialize the telemetry client with a flag to enable or disable telemetry
  33. telemetry_enabled = os.getenv("TELEMETRY_ENABLED", "true").lower() in (
  34. "true",
  35. "1",
  36. "t",
  37. )
  38. debug_mode = os.getenv("DEBUG_MODE", "false").lower() in (
  39. "true",
  40. "1",
  41. "t",
  42. )
  43. telemetry_client = PosthogClient(
  44. api_key="phc_OPBbibOIErCGc4NDLQsOrMuYFTKDmRwXX6qxnTr6zpU",
  45. enabled=telemetry_enabled,
  46. )