
    8i0
                     :    S r SSKJr  SSKJrJr   " S S\5      rg)z
requests_toolbelt.source_adapter
================================

This file contains an implementation of the SourceAddressAdapter originally
demonstrated on the Requests GitHub page.
    )HTTPAdapter   )poolmanager
basestringc                   B   ^  \ rS rSrSrU 4S jrSS jrU 4S jrSrU =r	$ )SourceAddressAdapter   a  
A Source Address Adapter for Python Requests that enables you to choose the
local address to bind to. This allows you to send your HTTP requests from a
specific interface and IP address.

Two address formats are accepted. The first is a string: this will set the
local IP address to the address given in the string, and will also choose a
semi-random high port for the local port number.

The second is a two-tuple of the form (ip address, port): for example,
``('10.10.10.10', 8999)``. This will set the local IP address to the first
element, and the local port to the second element. If ``0`` is used as the
port number, a semi-random high port will be selected.

.. warning:: Setting an explicit local port can have negative interactions
             with connection-pooling in Requests: in particular, it risks
             the possibility of getting "Address in use" errors. The
             string-only argument is generally preferred to the tuple-form.

Example usage:

.. code-block:: python

    import requests
    from requests_toolbelt.adapters.source import SourceAddressAdapter

    s = requests.Session()
    s.mount('http://', SourceAddressAdapter('10.10.10.10'))
    s.mount('https://', SourceAddressAdapter(('10.10.10.10', 8999)))
c                    > [        U[        5      (       a
  US4U l        O'[        U[        5      (       a  Xl        O[	        S5      e[
        [        U ]  " S0 UD6  g )Nr   z<source_address must be IP address string or (ip, port) tuple )
isinstancer   source_addresstuple	TypeErrorsuperr   __init__)selfr   kwargs	__class__s      q/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/requests_toolbelt/adapters/source.pyr   SourceAddressAdapter.__init__-   sU    nj11#11"5D.."0N  	"D2<V<    c                 P    [         R                  " UUUU R                  S9U l         g )N)	num_poolsmaxsizeblockr   )r   PoolManagerr   )r   connectionsr   r   s       r   init_poolmanager%SourceAddressAdapter.init_poolmanager9   s'    &22!..	0r   c                 J   > U R                   US'   [        [        U ]  " U0 UD6$ )Nr   )r   r   r   proxy_manager_for)r   argsr   r   s      r   r!   &SourceAddressAdapter.proxy_manager_for@   s4    #'#6#6 )4B 	r   )r   r   )F)
__name__
__module____qualname____firstlineno____doc__r   r   r!   __static_attributes____classcell__)r   s   @r   r   r      s    <
=0 r   r   N)r(   requests.adaptersr   _compatr   r   r   r   r   r   <module>r-      s    * -5; 5r   