
    XaJj                     $    d Z ddlZ G d d      Zy)z
Support for @synchronized blocks

The python class object_lock is a contextmanager for with statements that
can also be used manually.
    Nc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)object_locka[  
    A context manager that implements the same feature as
    @synchronized statements in Objective-C. Locking can also
    be done manually using the ``lock`` and ``unlock`` methods.

    The mutex for object ``anObject`` is represented by
    ``objc.object_lock(anObject)``.

    Usage:

        with object_lock(anObject):
            ...
    c                     || _         y N)_object_lock__value)selfvalues     W/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/objc/_locking.py__init__zobject_lock.__init__   s	        c                 B    t        j                  | j                         y r   _objc_objc_sync_enterr   r   s    r
   	__enter__zobject_lock.__enter__       t||,r   c                 B    t        j                  | j                         y r   r   _objc_sync_exitr   )r   exc_typer	   tps       r
   __exit__zobject_lock.__exit__        dll+r   c                 B    t        j                  | j                         y r   r   r   s    r
   lockzobject_lock.lock#   r   r   c                 B    t        j                  | j                         y r   r   r   s    r
   unlockzobject_lock.unlock&   r   r   N)	__name__
__module____qualname____doc__r   r   r   r   r    r   r
   r   r      s     -,-,r   r   )r"   objcr   r   r#   r   r
   <module>r%      s    , ,r   