
    .Ph0
                     B    d Z ddlmZ ddlmZmZ  G 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                   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          |           j        di | 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__s      a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/requests_toolbelt/adapters/source.pyr   zSourceAddressAdapter.__init__-   s    nj11 	#11"5D.. 	"0DN   	3"D))2<<V<<<<<    Fc                 J    t          j        |||| j                  | _         d S )N)	num_poolsmaxsizeblockr   )r   PoolManagerr   )r   connectionsr   r   s       r   init_poolmanagerz%SourceAddressAdapter.init_poolmanager9   s1    &2!.	0 0 0r   c                 X    | j         |d<    t          t          |           j        |i |S )Nr   )r   r   r   proxy_manager_for)r   argsr   r   s      r   r   z&SourceAddressAdapter.proxy_manager_for@   s>    #'#6 Bu)400B  	r   )F)__name__
__module____qualname____doc__r   r   r   __classcell__)r   s   @r   r   r      so         <
= 
= 
= 
= 
=0 0 0 0        r   r   N)r#   requests.adaptersr   _compatr   r   r   r
   r   r   <module>r'      so     * ) ) ) ) ) - - - - - - - -5 5 5 5 5; 5 5 5 5 5r   