
    8i                     B    S SK r SSKJr   " S S\ R                  5      rg)    N   )urljoinc                   R   ^  \ rS rSrSrSrS	U 4S jjrU 4S jrU 4S jrS r	Sr
U =r$ )
BaseUrlSession   a  A Session with a URL that all requests will use as a base.

Let's start by looking at a few examples:

.. code-block:: python

    >>> from requests_toolbelt import sessions
    >>> s = sessions.BaseUrlSession(
    ...     base_url='https://example.com/resource/')
    >>> r = s.get('sub-resource/', params={'foo': 'bar'})
    >>> print(r.request.url)
    https://example.com/resource/sub-resource/?foo=bar

Our call to the ``get`` method will make a request to the URL passed in
when we created the Session and the partial resource name we provide.
We implement this by overriding the ``request`` method of the Session.

Likewise, we override the ``prepare_request`` method so you can construct
a PreparedRequest in the same way:

.. code-block:: python

    >>> from requests import Request
    >>> from requests_toolbelt import sessions
    >>> s = sessions.BaseUrlSession(
    ...     base_url='https://example.com/resource/')
    >>> request = Request(method='GET', url='sub-resource/')
    >>> prepared_request = s.prepare_request(request)
    >>> r = s.send(prepared_request)
    >>> print(r.request.url)
    https://example.com/resource/sub-resource

.. note::

    The base URL that you provide and the path you provide are **very**
    important.

Let's look at another *similar* example

.. code-block:: python

    >>> from requests_toolbelt import sessions
    >>> s = sessions.BaseUrlSession(
    ...     base_url='https://example.com/resource/')
    >>> r = s.get('/sub-resource/', params={'foo': 'bar'})
    >>> print(r.request.url)
    https://example.com/sub-resource/?foo=bar

The key difference here is that we called ``get`` with ``/sub-resource/``,
i.e., there was a leading ``/``. This changes how we create the URL
because we rely on :mod:`urllib.parse.urljoin`.

To override how we generate the URL, sub-class this method and override the
``create_url`` method.

Based on implementation from
https://github.com/kennethreitz/requests/issues/2554#issuecomment-109341010
Nc                 D   > U(       a  Xl         [        [        U ]  5         g N)base_urlsuperr   __init__)selfr
   	__class__s     j/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/requests_toolbelt/sessions.pyr   BaseUrlSession.__init__D   s    $Mnd,.    c                 V   > U R                  U5      n[        [        U ]  " X/UQ70 UD6$ )z3Send the request after generating the complete URL.)
create_urlr   r   request)r   methodurlargskwargsr   s        r   r   BaseUrlSession.requestI   s8    ooc"^T2

"(
 	
r   c                 t   > U R                  UR                  5      Ul        [        [        U ]  " U/UQ70 UD6$ )z6Prepare the request after generating the complete URL.)r   r   r   r   prepare_request)r   r   r   r   r   s       r   r   BaseUrlSession.prepare_requestP   s>    oogkk2^T:

$
 	
r   c                 .    [        U R                  U5      $ )z+Create the URL based off this partial path.)r   r
   )r   r   s     r   r   BaseUrlSession.create_urlW   s    t}}c**r   )r
   r	   )__name__
__module____qualname____firstlineno____doc__r
   r   r   r   r   __static_attributes____classcell__)r   s   @r   r   r      s)    9v H/


+ +r   r   )requests_compatr   Sessionr    r   r   <module>r*      s     S+X%% S+r   