
    k7i                     f    S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJr   " S S\5      rg	)
    )Sequence)AnySupportsFloat)ReadOnlyError)override)AsyncKeyValue)BaseWrapperc                   |  ^  \ rS rSrSr SS\S\SS4U 4S jjjr\SS.S	\	S
\	S-  S\
\	\4   S-  4S jj5       r\SS.S\\	   S
\	S-  S\\
\	\4   S-     4S jj5       r\SS.S	\	S
\	S-  S\\
\	\4   S-  \S-  4   4S jj5       r\SS.S\\	   S
\	S-  S\\\
\	\4   S-  \S-  4      4S jj5       r\SSS.S	\	S\
\	\4   S
\	S-  S\S-  SS4
S jj5       r\SSS.S\\	   S\\
\	\4      S
\	S-  S\\S-     S-  SS4
S jj5       r\SS.S	\	S
\	S-  S\4S jj5       r\SS.S\\	   S
\	S-  S\4S jj5       rSrU =r$ )ReadOnlyWrapper   a  Wrapper that prevents all write operations on the underlying store.

This wrapper allows all read operations (get, get_many, ttl, ttl_many) to pass through
normally, but blocks all write operations (put, put_many, delete, delete_many).
This is useful for:
- Protecting production data during testing
- Enforcing read-only access to read replicas
- Preventing accidental modifications in certain environments
	key_valueraise_on_writereturnNc                 :   > Xl         X l        [        TU ]  5         g)a!  Initialize the read-only wrapper.

Args:
    key_value: The store to wrap.
    raise_on_write: If True (default), raises ReadOnlyError on write attempts.
                   If False, silently ignores writes (put/put_many return None,
                   delete/delete_many return False/0).
N)r   r   super__init__)selfr   r   	__class__s      b/home/james-whalen/.local/lib/python3.13/site-packages/key_value/aio/wrappers/read_only/wrapper.pyr   ReadOnlyWrapper.__init__   s     )2$2    )
collectionkeyr   c                P   #    U R                   R                  XS9I S h  vN $  N7fN)r   r   )r   getr   r   r   s      r   r   ReadOnlyWrapper.get(   #     ^^''C'GGGG   &$&keysc                P   #    U R                   R                  XS9I S h  vN $  N7fN)r!   r   )r   get_manyr   r!   r   s      r   r$   ReadOnlyWrapper.get_many,   #     ^^,,$,NNNNr    c                P   #    U R                   R                  XS9I S h  vN $  N7fr   )r   ttlr   s      r   r)   ReadOnlyWrapper.ttl0   r   r    c                P   #    U R                   R                  XS9I S h  vN $  N7fr#   )r   ttl_manyr%   s      r   r,   ReadOnlyWrapper.ttl_many4   r'   r    )r   r)   valuer)   c                B   #    U R                   (       a
  [        SX1S9eg 7f)Nput	operationr   r   r   r   )r   r   r.   r   r)   s        r   r0   ReadOnlyWrapper.put8   s      %JPP    valuesc                \   #    U R                   (       a  [        SU[        U5       S3S9eg 7f)Nput_many keysr1   r   r   len)r   r!   r6   r   r)   s        r   r8   ReadOnlyWrapper.put_many=   s4      *TWX\T]S^^cQdee    *,c                B   #    U R                   (       a
  [        SX!S9eg7f)Ndeleter1   Fr3   r   s      r   r?   ReadOnlyWrapper.deleteI   s     (zSSr5   c                \   #    U R                   (       a  [        SU[        U5       S3S9eg7f)Ndelete_manyr9   r1   r   r:   r%   s      r   rB   ReadOnlyWrapper.delete_manyO   s0     -JWZ[_W`VaafTghhr=   )r   r   )T)__name__
__module____qualname____firstlineno____doc__r   boolr   r   strdictr   r   listr$   tuplefloatr)   r,   r   r0   r   r8   r?   intrB   __static_attributes____classcell__)r   s   @r   r   r      s     $   
	 $ >B HS Ht HtCQTH~X\G\ H H JN O49 OS4Z OSWX\]`be]eXfimXmSn O O >B HS Ht HuTRUWZRZ^^bMbdilpdpMpGq H H JN O49 OS4Z OSWX]^bcfhkck^los^suz  ~B  vB  _B  YC  TD O O UYw{ QS Qc3h Qd
 Q`mpt`t Q  AE Q Q  "&59	f3i	f c3h(	f
 $J	f md*+d2	f 
	f 	f AE  C$J $  
 MQ d3i d
 VY  r   r   N)collections.abcr   typingr   r   *key_value.shared.errors.wrappers.read_onlyr   typing_extensionsr   !key_value.aio.protocols.key_valuer   key_value.aio.wrappers.baser	   r    r   r   <module>rY      s%    $ % D & ; 3Hk Hr   