§
    ™Štj²(  ã                  ó€   — d Z ddlmZ ddlmZmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZ  G d„ d	¦  «        Zd
S )z+Synchronous store client for LangGraph SDK.é    )Úannotations)ÚMappingÚSequence)ÚAnyÚLiteral)Ú_provided_vals)ÚSyncHttpClient)ÚItemÚListNamespaceResponseÚQueryParamTypesÚSearchItemsResponsec                  ó€   — e Zd ZdZd1d„Z	 	 	 	 d2d3d„Zddddœd4d„Z	 	 d5d6d„Z	 	 	 	 	 	 	 d7d8d(„Z	 	 	 	 	 d9ddd*œd:d0„Z	dS );ÚSyncStoreClienta¢  A client for synchronous operations on a key-value store.

    Provides methods to interact with a remote key-value store, allowing
    storage and retrieval of items within namespaced hierarchies.

    ???+ example "Example"

        ```python
        client = get_sync_client(url="http://localhost:2024"))
        client.store.put_item(["users", "profiles"], "user123", {"name": "Alice", "age": 30})
        ```
    Úhttpr	   ÚreturnÚNonec                ó   — || _         d S )N)r   )Úselfr   s     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langgraph_sdk/_sync/store.pyÚ__init__zSyncStoreClient.__init__    s   € ØˆŒ	ˆ	ˆ	ó    NÚkeyÚstrÚvalueúMapping[str, Any]Úindexú!Literal[False] | list[str] | NoneÚttlú
int | NoneÚheadersúMapping[str, str] | NoneÚparamsúQueryParamTypes | NoneÚ	namespaceúSequence[str]c               ó¤   — |D ]}d|v rt          d|› d�¦  «        ‚Œ|||||dœ}	| j                             dt          |	¦  «        ||¬¦  «         dS )aÜ  Store or update an item.

        Args:
            namespace: A list of strings representing the namespace path.
            key: The unique identifier for the item within the namespace.
            value: A dictionary containing the item's data.
            index: Controls search indexing - None (use defaults), False (disable), or list of field paths to index.
            ttl: Optional time-to-live in minutes for the item, or None for no expiration.
            headers: Optional custom headers to include with the request.
            params: Optional query parameters to include with the request.

        Returns:
            `None`

        ???+ example "Example Usage"

            ```python
            client = get_sync_client(url="http://localhost:8123")
            client.store.put_item(
                ["documents", "user123"],
                key="item456",
                value={"title": "My Document", "content": "Hello World"}
            )
            ```
        ú.úInvalid namespace label 'ú1'. Namespace labels cannot contain periods ('.').)r$   r   r   r   r   ú/store/items©Újsonr    r"   N)Ú
ValueErrorr   Úputr   )
r   r$   r   r   r   r   r    r"   ÚlabelÚpayloads
             r   Úput_itemzSyncStoreClient.put_item#   sš   € ðH ð 	ð 	ˆEØ�eˆ|ˆ|Ý Øh°ÐhÐhÐhñô ð ð ð
 #ØØØØð
ð 
ˆð 	Œ	�ŠØ¥°Ñ!8Ô!8À'ÐRXð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   )Úrefresh_ttlr    r"   r2   úbool | Noner
   c              óà   — |D ]}d|v rt          d|› d�¦  «        ‚Œ|d                     |¦  «        dœ}|�||d<   |r|                     |¦  «         | j                             d||¬¦  «        S )	at  Retrieve a single item.

        Args:
            key: The unique identifier for the item.
            namespace: Optional list of strings representing the namespace path.
            refresh_ttl: Whether to refresh the TTL on this read operation. If `None`, uses the store's default behavior.
            headers: Optional custom headers to include with the request.

        Returns:
            The retrieved item.

        ???+ example "Example Usage"

            ```python
            client = get_sync_client(url="http://localhost:8123")
            item = client.store.get_item(
                ["documents", "user123"],
                key="item456",
            )
            print(item)
            ```

            ```shell
            ----------------------------------------------------------------

            {
                'namespace': ['documents', 'user123'],
                'key': 'item456',
                'value': {'title': 'My Document', 'content': 'Hello World'},
                'created_at': '2024-07-30T12:00:00Z',
                'updated_at': '2024-07-30T12:00:00Z'
            }
            ```
        r'   r(   r)   ©r   r$   Nr2   r*   )r"   r    )r-   ÚjoinÚupdater   Úget)r   r$   r   r2   r    r"   r/   Úquery_paramss           r   Úget_itemzSyncStoreClient.get_itemW   s£   € ðX ð 	ð 	ˆEØ�eˆ|ˆ|Ý Øh°ÐhÐhÐhñô ð ð ð
 03ÀÇÂÈ)ÑATÔATÐ'UÐ'UˆØÐ"Ø*5ˆL˜Ñ'Øð 	(Ø×Ò Ñ'Ô'Ð'ØŒy�}Š}˜^°LÈ'ˆ}ÑRÔRÐRr   c               óH   — | j                              d||dœ||¬¦  «         dS )as  Delete an item.

        Args:
            key: The unique identifier for the item.
            namespace: Optional list of strings representing the namespace path.
            headers: Optional custom headers to include with the request.
            params: Optional query parameters to include with the request.

        Returns:
            `None`

        ???+ example "Example Usage"

            ```python
            client = get_sync_client(url="http://localhost:8123")
            client.store.delete_item(
                ["documents", "user123"],
                key="item456",
            )
            ```
        r*   r5   r+   N)r   Údelete)r   r$   r   r    r"   s        r   Údelete_itemzSyncStoreClient.delete_item�   sA   € ð: 	Œ	×ÒØØ¨9Ð5Ð5ØØð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   é
   r   ÚfilterúMapping[str, Any] | NoneÚlimitÚintÚoffsetÚqueryú
str | NoneÚnamespace_prefixr   c	               ój   — ||||||dœ}	| j                              dt          |	¦  «        ||¬¦  «        S )a*  Search for items within a namespace prefix.

        Args:
            namespace_prefix: List of strings representing the namespace prefix.
            filter: Optional dictionary of key-value pairs to filter results.
            limit: Maximum number of items to return (default is 10).
            offset: Number of items to skip before returning results (default is 0).
            query: Optional query for natural language search.
            refresh_ttl: Whether to refresh the TTL on items returned by this search. If `None`, uses the store's default behavior.
            headers: Optional custom headers to include with the request.
            params: Optional query parameters to include with the request.

        Returns:
            A list of items matching the search criteria.

        ???+ example "Example Usage"

            ```python
            client = get_sync_client(url="http://localhost:8123")
            items = client.store.search_items(
                ["documents"],
                filter={"author": "John Doe"},
                limit=5,
                offset=0
            )
            print(items)
            ```
            ```shell
            ----------------------------------------------------------------

            {
                "items": [
                    {
                        "namespace": ["documents", "user123"],
                        "key": "item789",
                        "value": {
                            "title": "Another Document",
                            "author": "John Doe"
                        },
                        "created_at": "2024-07-30T12:00:00Z",
                        "updated_at": "2024-07-30T12:00:00Z"
                    },
                    # ... additional items ...
                ]
            }
            ```
        )rF   r?   rA   rC   rD   r2   z/store/items/searchr+   ©r   Úpostr   )
r   rF   r?   rA   rC   rD   r2   r    r"   r0   s
             r   Úsearch_itemszSyncStoreClient.search_items´   sV   € ðx !1ØØØØØ&ð
ð 
ˆð Œy�~Š~Ø!Ý Ñ(Ô(ØØð	 ñ 
ô 
ð 	
r   éd   )r    r"   Úprefixúlist[str] | NoneÚsuffixÚ	max_depthr   c               óh   — |||||dœ}| j                              dt          |¦  «        ||¬¦  «        S )a  List namespaces with optional match conditions.

        Args:
            prefix: Optional list of strings representing the prefix to filter namespaces.
            suffix: Optional list of strings representing the suffix to filter namespaces.
            max_depth: Optional integer specifying the maximum depth of namespaces to return.
            limit: Maximum number of namespaces to return (default is 100).
            offset: Number of namespaces to skip before returning results (default is 0).
            headers: Optional custom headers to include with the request.

        Returns:
            A list of namespaces matching the criteria.

        ???+ example "Example Usage"

            ```python
            client = get_sync_client(url="http://localhost:8123")
            namespaces = client.store.list_namespaces(
                prefix=["documents"],
                max_depth=3,
                limit=10,
                offset=0
            )
            print(namespaces)
            ```

            ```shell
            ----------------------------------------------------------------

            [
                ["documents", "user123", "reports"],
                ["documents", "user456", "invoices"],
                ...
            ]
            ```
        )rL   rN   rO   rA   rC   z/store/namespacesr+   rH   )	r   rL   rN   rO   rA   rC   r    r"   r0   s	            r   Úlist_namespaceszSyncStoreClient.list_namespacesþ   sS   € ð` ØØ"ØØð
ð 
ˆð Œy�~Š~ØÝ Ñ(Ô(ØØð	 ñ 
ô 
ð 	
r   )r   r	   r   r   )NNNN)r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r   r   )r   r   r$   r%   r2   r3   r    r!   r"   r#   r   r
   )NN)
r   r   r    r!   r"   r#   r$   r%   r   r   )Nr>   r   NNNN)r?   r@   rA   rB   rC   rB   rD   rE   r2   r3   r    r!   r"   r#   rF   r%   r   r   )NNNrK   r   )rL   rM   rN   rM   rO   r   rA   rB   rC   rB   r    r!   r"   r#   r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r1   r:   r=   rJ   rQ   © r   r   r   r      s  € € € € € ðð ðð ð ð ð 48ØØ,0Ø)-ð2
ð 2
ð 2
ð 2
ð 2
ðt $(Ø,0Ø)-ð7Sð 7Sð 7Sð 7Sð 7Sð 7Sð| -1Ø)-ð"
ð "
ð "
ð "
ð "
ðP ,0ØØØ Ø#'Ø,0Ø)-ðH
ð H
ð H
ð H
ð H
ðX $(Ø#'Ø $ØØð;
ð -1Ø)-ð;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
r   r   N)rU   Ú
__future__r   Úcollections.abcr   r   Útypingr   r   Úlanggraph_sdk._shared.utilitiesr   Úlanggraph_sdk._sync.httpr	   Úlanggraph_sdk.schemar
   r   r   r   r   rV   r   r   ú<module>r]      sé   ðØ 1Ð 1à "Ð "Ð "Ð "Ð "Ð "à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ð Ð à :Ð :Ð :Ð :Ð :Ð :Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ðg
ð g
ð g
ð g
ð g
ñ g
ô g
ð g
ð g
ð g
r   