Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/sentry_sdk/integrations/modules.py: 38%

35 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1from __future__ import absolute_import 

2 

3from sentry_sdk.hub import Hub 

4from sentry_sdk.integrations import Integration 

5from sentry_sdk.scope import add_global_event_processor 

6 

7from sentry_sdk._types import MYPY 

8 

9if MYPY: 9 ↛ 10line 9 didn't jump to line 10, because the condition on line 9 was never true

10 from typing import Any 

11 from typing import Dict 

12 from typing import Tuple 

13 from typing import Iterator 

14 

15 from sentry_sdk._types import Event 

16 

17 

18_installed_modules = None 

19 

20 

21def _generate_installed_modules(): 

22 # type: () -> Iterator[Tuple[str, str]] 

23 try: 

24 import pkg_resources 

25 except ImportError: 

26 return 

27 

28 for info in pkg_resources.working_set: 

29 yield info.key, info.version 

30 

31 

32def _get_installed_modules(): 

33 # type: () -> Dict[str, str] 

34 global _installed_modules 

35 if _installed_modules is None: 

36 _installed_modules = dict(_generate_installed_modules()) 

37 return _installed_modules 

38 

39 

40class ModulesIntegration(Integration): 

41 identifier = "modules" 

42 

43 @staticmethod 

44 def setup_once(): 

45 # type: () -> None 

46 @add_global_event_processor 

47 def processor(event, hint): 

48 # type: (Event, Any) -> Dict[str, Any] 

49 if event.get("type") == "transaction": 

50 return event 

51 

52 if Hub.current.get_integration(ModulesIntegration) is None: 

53 return event 

54 

55 event["modules"] = _get_installed_modules() 

56 return event