
    |h0
                     :    d Z ddlmZ ddlmZmZ  G d de      Zy)z
requests_toolbelt.source_adapter
================================

This file contains an implementation of the SourceAddressAdapter originally
demonstrated on the Requests GitHub page.
    )HTTPAdapter   )poolmanager
basestringc                   4     e Zd ZdZ fdZddZ fdZ xZS )SourceAddressAdaptera:  
    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                     t        |t              r
|df| _        n#t        |t              r|| _        nt	        d      t        t        |   di | y )Nr   z<source_address must be IP address string or (ip, port) tuple )
isinstancer   source_addresstuple	TypeErrorsuperr   __init__)selfr   kwargs	__class__s      `/var/www/html/test/engine/venv/lib/python3.12/site-packages/requests_toolbelt/adapters/source.pyr   zSourceAddressAdapter.__init__-   sQ    nj1#11"5D."0DN  	"D2<V<    c                 T    t        j                  |||| j                        | _         y )N)	num_poolsmaxsizeblockr   )r   PoolManagerr   )r   connectionsr   r   s       r   init_poolmanagerz%SourceAddressAdapter.init_poolmanager9   s'    &22!..	0r   c                 H    | j                   |d<   t        t        |   |i |S )Nr   )r   r   r   proxy_manager_for)r   argsr   r   s      r   r   z&SourceAddressAdapter.proxy_manager_for@   s4    #'#6#6 )4B 	r   )F)__name__
__module____qualname____doc__r   r   r   __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   