Skip to content

Commit 0bbe222

Browse files
authored
Merge pull request #2035 from codeflash-ai/perf/defer-telemetry-imports
perf: defer posthog, sentry_sdk, and requests imports in telemetry
2 parents 161ab34 + 2cd23f9 commit 0bbe222

2 files changed

Lines changed: 35 additions & 29 deletions

File tree

codeflash/telemetry/posthog_cf.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
from __future__ import annotations
22

3-
import logging
4-
from typing import Any
3+
from typing import TYPE_CHECKING, Any
54

6-
from posthog import Posthog
5+
if TYPE_CHECKING:
6+
from posthog import Posthog
77

8-
from codeflash.api.cfapi import get_user_id
9-
from codeflash.cli_cmds.console import logger
10-
from codeflash.lsp.helpers import is_subagent_mode
11-
from codeflash.version import __version__
12-
13-
_posthog = None
8+
_posthog: Posthog | None = None
149

1510

1611
def initialize_posthog(*, enabled: bool = True) -> None:
@@ -21,6 +16,10 @@ def initialize_posthog(*, enabled: bool = True) -> None:
2116
if not enabled:
2217
return
2318

19+
import logging
20+
21+
from posthog import Posthog
22+
2423
global _posthog
2524
_posthog = Posthog(project_api_key="phc_aUO790jHd7z1SXwsYCz8dRApxueplZlZWeDSpKc5hol", host="https://us.posthog.com")
2625
_posthog.log.setLevel(logging.CRITICAL) # Suppress PostHog logging
@@ -36,6 +35,10 @@ def ph(event: str, properties: dict[str, Any] | None = None) -> None:
3635
if _posthog is None:
3736
return
3837

38+
from codeflash.api.cfapi import get_user_id
39+
from codeflash.lsp.helpers import is_subagent_mode
40+
from codeflash.version import __version__
41+
3942
properties = properties or {}
4043
properties.update({"cli_version": __version__, "subagent": is_subagent_mode()})
4144

@@ -44,4 +47,6 @@ def ph(event: str, properties: dict[str, Any] | None = None) -> None:
4447
if user_id:
4548
_posthog.capture(distinct_id=user_id, event=event, properties=properties)
4649
else:
50+
from codeflash.cli_cmds.console import logger
51+
4752
logger.debug("Failed to log event to PostHog: User ID could not be retrieved.")

codeflash/telemetry/sentry.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
1-
import logging
1+
def init_sentry(*, enabled: bool = False, exclude_errors: bool = False) -> None:
2+
if not enabled:
3+
return
24

3-
import sentry_sdk
4-
from sentry_sdk.integrations.logging import LoggingIntegration
5-
from sentry_sdk.integrations.stdlib import StdlibIntegration
5+
import logging
66

7+
import sentry_sdk
8+
from sentry_sdk.integrations.logging import LoggingIntegration
9+
from sentry_sdk.integrations.stdlib import StdlibIntegration
710

8-
def init_sentry(*, enabled: bool = False, exclude_errors: bool = False) -> None:
9-
if enabled:
10-
sentry_logging = LoggingIntegration(
11-
level=logging.INFO, # Capture info and above as breadcrumbs
12-
event_level=logging.CRITICAL # Send only fatal errors as events if exclude_errors is True
13-
if exclude_errors
14-
else logging.ERROR, # Otherwise, error logs will create sentry events
15-
)
11+
sentry_logging = LoggingIntegration(
12+
level=logging.INFO, # Capture info and above as breadcrumbs
13+
event_level=logging.CRITICAL # Send only fatal errors as events if exclude_errors is True
14+
if exclude_errors
15+
else logging.ERROR, # Otherwise, error logs will create sentry events
16+
)
1617

17-
sentry_sdk.init(
18-
dsn="https://4b9a1902f9361b48c04376df6483bc96@o4506833230561280.ingest.sentry.io/4506833262477312",
19-
integrations=[sentry_logging],
20-
disabled_integrations=[StdlibIntegration],
21-
traces_sample_rate=0,
22-
profiles_sample_rate=0,
23-
ignore_errors=[KeyboardInterrupt],
24-
)
18+
sentry_sdk.init(
19+
dsn="https://4b9a1902f9361b48c04376df6483bc96@o4506833230561280.ingest.sentry.io/4506833262477312",
20+
integrations=[sentry_logging],
21+
disabled_integrations=[StdlibIntegration],
22+
traces_sample_rate=0,
23+
profiles_sample_rate=0,
24+
ignore_errors=[KeyboardInterrupt],
25+
)

0 commit comments

Comments
 (0)