
    ph	                     H   S r SSKrSSKJr  SSKrSSKJr  SSKJrJ	r	  Sr
SrS	u  rrr\R                  S
:X  aa  \R                   " \R"                  S   \R"                  S   5      r\\R"                  S      r\\R"                  S      r\R%                  SSS9  S rS rS rg)z<
Interface to MongoDB that exposes it as a key-value store.
    N)Iterable)Binary   )config	constantskv)NNNdbhostportdatabase_namecollection_nameT)uniquec                     [        [        R                  [        U 05      5      nU(       d  gUS   [           n[
        R                  " U5      $ )zdReturn the value associated with a key.

If there is no value with the given key, returns ``None``.
Nr   )list
collectionfind	KEY_FIELDVALUE_FIELDpickleloads)keydocspickled_values      B/home/james-whalen/.local/lib/python3.13/site-packages/pyphi/db.pyr   r   "   s?    
 
C 012DGK(M<<&&    c                     [         R                  " U[        R                  S9n[        U [
        [        U5      0n [        R                  U5      $ ! [        R                  R                   a     gf = f)z]Store a value with a key.

If the key is already present in the database, this does nothing.
)protocolN)r   dumpsr   PICKLE_PROTOCOLr   r   r   r   insertpymongoerrorsDuplicateKeyError)r   valuedocs      r   r!   r!   0   sc     LL)B)BCE 	3VE]C  %%>>++ s   A A21A2c                 l    [        U [        5      (       a  [        [        U 5      5      $ [        U 45      $ )zlGet a key from some input.

This function should be used whenever a key is needed, to keep keys
consistent.
)
isinstancer   hashtuple)filtered_argss    r   generate_keyr,   E   s/     -**E-()) !!r   )__doc__r   collectionsr   r"   bson.binaryr    r   r   r   r   clientdatabaser   CACHING_BACKENDMongoClientMONGODB_CONFIGcreate_indexr   r!   r,    r   r   <module>r8      s   
      	  0 *	T!  !6!6v!>!'!6!6v!>@Ff++O<=H&//0ABCJC-'*
"r   