3 �P\� � @ s� d Z ddlZddlZddlmZ ddlmZ G dd� de�ZG d d � d e�Z G dd� de �Z G d d� de �Zdd� ZdddgZ dS )zEModule implementing the Pool for :mod:``requests_toolbelt.threaded``.� N� )�thread� )�queuec @ sn e Zd ZdZdddejfdd�Zdd� Zedd� �Z edd d ��Z dd� Zd d� Zdd� Z dd� Zdd� ZdS )�Poola> Pool that manages the threads containing sessions. :param queue: The queue you're expected to use to which you should add items. :type queue: queue.Queue :param initializer: Function used to initialize an instance of ``session``. :type initializer: collections.Callable :param auth_generator: Function used to generate new auth credentials for the session. :type auth_generator: collections.Callable :param int num_process: Number of threads to create. :param session: :type session: requests.Session Nc s| |d krt j� pd}|dk r$td��|� _tj� � _tj� � _|� _|pJt � _ |pTt � _|� _� fdd�t � j�D �� _d S )Nr z)Number of processes should at least be 1.c s&