U
    ÎZj/
  ã                   @   s4   d Z ddlmZ ddlmZmZ G dd„ deƒZdS )zº
requests_toolbelt.source_adapter
================================

This file contains an implementation of the SourceAddressAdapter originally
demonstrated on the Requests GitHub page.
é    )ÚHTTPAdapteré   )ÚpoolmanagerÚ
basestringc                       s6   e Zd ZdZ‡ fdd„Zd	dd„Z‡ fdd„Z‡  ZS )
ÚSourceAddressAdaptera9  
    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                    sF   t |tƒr|df| _nt |tƒr(|| _ntdƒ‚tt| ƒjf |Ž d S )Nr   z<source_address must be IP address string or (ip, port) tuple)Ú
isinstancer   Úsource_addressÚtupleÚ	TypeErrorÚsuperr   Ú__init__)Úselfr   Úkwargs©Ú	__class__© úd/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/requests_toolbelt/adapters/source.pyr   -   s    

ÿzSourceAddressAdapter.__init__Fc                 C   s   t j|||| jd�| _ d S )N)Ú	num_poolsÚmaxsizeÚblockr   )r   ÚPoolManagerr   )r   Úconnectionsr   r   r   r   r   Úinit_poolmanager9   s    üz%SourceAddressAdapter.init_poolmanagerc                    s   | j |d< tt| ƒj||ŽS )Nr   )r   r   r   Úproxy_manager_for)r   Úargsr   r   r   r   r   @   s
    

 ÿz&SourceAddressAdapter.proxy_manager_for)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ú__classcell__r   r   r   r   r      s   
r   N)r   Zrequests.adaptersr   Z_compatr   r   r   r   r   r   r   Ú<module>   s   