ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙfrom __future__ import absolute_import from sentry_sdk import Hub from sentry_sdk.consts import OP from sentry_sdk.utils import capture_internal_exceptions from sentry_sdk.integrations.redis import ( RedisIntegration, _get_redis_command_args, _get_span_description, _set_client_data, _set_pipeline_data, ) from sentry_sdk._types import MYPY if MYPY: from typing import Any def patch_redis_async_pipeline(pipeline_cls): # type: (Any) -> None old_execute = pipeline_cls.execute async def _sentry_execute(self, *args, **kwargs): # type: (Any, *Any, **Any) -> Any hub = Hub.current if hub.get_integration(RedisIntegration) is None: return await old_execute(self, *args, **kwargs) with hub.start_span( op=OP.DB_REDIS, description="redis.pipeline.execute" ) as span: with capture_internal_exceptions(): _set_pipeline_data( span, False, _get_redis_command_args, self.is_transaction, self.command_stack, ) return await old_execute(self, *args, **kwargs) pipeline_cls.execute = _sentry_execute def patch_redis_async_client(cls): # type: (Any) -> None old_execute_command = cls.execute_command async def _sentry_execute_command(self, name, *args, **kwargs): # type: (Any, str, *Any, **Any) -> Any hub = Hub.current if hub.get_integration(RedisIntegration) is None: return await old_execute_command(self, name, *args, **kwargs) description = _get_span_description(name, *args) with hub.start_span(op=OP.DB_REDIS, description=description) as span: _set_client_data(span, False, name, *args) return await old_execute_command(self, name, *args, **kwargs) cls.execute_command = _sentry_execute_command