Parcourir la source

try contextmanager (#26074)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
tags/1.9.0
Asuka Minato il y a 1 mois
Parent
révision
f4522fd695
Aucun compte lié à l'adresse e-mail de l'auteur
1 fichiers modifiés avec 15 ajouts et 34 suppressions
  1. 15
    34
      api/core/workflow/graph_engine/event_management/event_manager.py

+ 15
- 34
api/core/workflow/graph_engine/event_management/event_manager.py Voir le fichier

@@ -5,6 +5,7 @@ Unified event manager for collecting and emitting events.
import threading
import time
from collections.abc import Generator
from contextlib import contextmanager
from typing import final

from core.workflow.graph_events import GraphEngineEvent
@@ -51,43 +52,23 @@ class ReadWriteLock:
"""Release a write lock."""
self._read_ready.release()

def read_lock(self) -> "ReadLockContext":
@contextmanager
def read_lock(self):
"""Return a context manager for read locking."""
return ReadLockContext(self)
self.acquire_read()
try:
yield
finally:
self.release_read()

def write_lock(self) -> "WriteLockContext":
@contextmanager
def write_lock(self):
"""Return a context manager for write locking."""
return WriteLockContext(self)


@final
class ReadLockContext:
"""Context manager for read locks."""

def __init__(self, lock: ReadWriteLock) -> None:
self._lock = lock

def __enter__(self) -> "ReadLockContext":
self._lock.acquire_read()
return self

def __exit__(self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: object) -> None:
self._lock.release_read()


@final
class WriteLockContext:
"""Context manager for write locks."""

def __init__(self, lock: ReadWriteLock) -> None:
self._lock = lock

def __enter__(self) -> "WriteLockContext":
self._lock.acquire_write()
return self

def __exit__(self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: object) -> None:
self._lock.release_write()
self.acquire_write()
try:
yield
finally:
self.release_write()


@final

Chargement…
Annuler
Enregistrer