fix(api): avoid OpenSearch import collision with local events package

This commit is contained in:
Eridani 2026-03-20 18:11:58 +08:00
parent 3d5a29462e
commit 5d39dec94e
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,22 @@
class _EventHook:
def __init__(self):
self._handlers = []
def __iadd__(self, handler):
self._handlers.append(handler)
return self
def __isub__(self, handler):
self._handlers.remove(handler)
return self
def __call__(self, *args, **kwargs):
for handler in list(self._handlers):
handler(*args, **kwargs)
class Events:
def __getattr__(self, name):
hook = _EventHook()
setattr(self, name, hook)
return hook

View File

@ -0,0 +1,16 @@
def test_local_events_exports_compat_events_class():
import events
evt = events.Events()
called = []
evt.request_start += lambda *args, **kwargs: called.append((args, kwargs))
evt.request_start("GET", "/_search")
assert len(called) == 1
def test_opensearch_import_works_with_local_events_package():
from opensearchpy import OpenSearch
assert OpenSearch is not None