From c0cfd48edc618eedd825a41e94f3b583877cf2c7 Mon Sep 17 00:00:00 2001 From: Neel Shah Date: Tue, 15 Jul 2025 14:40:07 +0200 Subject: [PATCH] Remove eventlet testing --- MIGRATION_GUIDE.md | 1 + sentry_sdk/_queue.py | 3 --- sentry_sdk/utils.py | 19 +------------------ tests/conftest.py | 23 +++-------------------- 4 files changed, 5 insertions(+), 41 deletions(-) diff --git a/MIGRATION_GUIDE.md b/MIGRATION_GUIDE.md index 31175d4303..9cc8a14fa1 100644 --- a/MIGRATION_GUIDE.md +++ b/MIGRATION_GUIDE.md @@ -177,6 +177,7 @@ Looking to upgrade from Sentry SDK 2.x to 3.x? Here's a comprehensive list of wh - Dropped support for Django versions below 2.0. - Dropped support for trytond versions below 5.0. - Dropped support for Falcon versions below 3.0. +- Dropped support for eventlet completely. ### Deprecated diff --git a/sentry_sdk/_queue.py b/sentry_sdk/_queue.py index 7a385cd861..59fac1786e 100644 --- a/sentry_sdk/_queue.py +++ b/sentry_sdk/_queue.py @@ -10,9 +10,6 @@ https://bugs.python.org/issue14976 https://github.com/sqlalchemy/sqlalchemy/blob/4eb747b61f0c1b1c25bdee3856d7195d10a0c227/lib/sqlalchemy/queue.py#L1 -We also vendor the code to evade eventlet's broken monkeypatching, see -https://github.com/getsentry/sentry-python/pull/484 - Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation; diff --git a/sentry_sdk/utils.py b/sentry_sdk/utils.py index 746d1eae54..cfea99ee67 100644 --- a/sentry_sdk/utils.py +++ b/sentry_sdk/utils.py @@ -1240,7 +1240,7 @@ def parse_version(version: str) -> Optional[Tuple[int, ...]]: def _is_contextvars_broken() -> bool: """ - Returns whether gevent/eventlet have patched the stdlib in a way where thread locals are now more "correct" than contextvars. + Returns whether gevent has patched the stdlib in a way where thread locals are now more "correct" than contextvars. """ try: import gevent @@ -1269,23 +1269,6 @@ def _is_contextvars_broken() -> bool: except ImportError: pass - try: - import greenlet - from eventlet.patcher import is_monkey_patched # type: ignore - - greenlet_version = parse_version(greenlet.__version__) - - if greenlet_version is None: - logger.error( - "Internal error in Sentry SDK: Could not parse Greenlet version from greenlet.__version__." - ) - return False - - if is_monkey_patched("thread") and greenlet_version < (0, 5): - return True - except ImportError: - pass - return False diff --git a/tests/conftest.py b/tests/conftest.py index a96c9c27a6..0942a0c163 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,11 +20,6 @@ except ImportError: gevent = None -try: - import eventlet -except ImportError: - eventlet = None - import sentry_sdk import sentry_sdk.utils from sentry_sdk.envelope import Envelope @@ -334,23 +329,11 @@ def read_flush(self): # scope=session ensures that fixture is run earlier @pytest.fixture( scope="session", - params=[None, "eventlet", "gevent"], - ids=("threads", "eventlet", "greenlet"), + params=[None, "gevent"], + ids=("threads", "greenlet"), ) def maybe_monkeypatched_threading(request): - if request.param == "eventlet": - if eventlet is None: - pytest.skip("no eventlet installed") - - try: - eventlet.monkey_patch() - except AttributeError as e: - if "'thread.RLock' object has no attribute" in str(e): - # https://bitbucket.org/pypy/pypy/issues/2962/gevent-cannot-patch-rlock-under-pypy-27-7 - pytest.skip("https://github.com/eventlet/eventlet/issues/546") - else: - raise - elif request.param == "gevent": + if request.param == "gevent": if gevent is None: pytest.skip("no gevent installed") try: