ó
Ð²Ebc           @@  sÏ   d  d l  m Z d  d l m Z d d l m Z d d l m Z m Z d Z	 e
 d d d	 g ƒ Z d
 Z y d  d l Z Wn e k
 rŠ n Xe d 7Z e ƒ  Z d d d d d d d „ Z d „  Z d „  Z d S(   i    (   t   absolute_import(   t	   b64encodei   (   t   UnrewindableBodyError(   t   bt   integer_typess   @@@SKIP_HEADER@@@s   accept-encodingt   hosts
   user-agents   gzip,deflateNs   ,brc         C@  sç   i  } | rR t  | t ƒ r n' t  | t ƒ r? d j | ƒ } n t } | | d <n  | re | | d <n  |  rx d | d <n  | r¤ d t t | ƒ ƒ j d ƒ | d <n  | rÐ d t t | ƒ ƒ j d ƒ | d	 <n  | rã d
 | d <n  | S(   s  
    Shortcuts for generating request headers.

    :param keep_alive:
        If ``True``, adds 'connection: keep-alive' header.

    :param accept_encoding:
        Can be a boolean, list, or string.
        ``True`` translates to 'gzip,deflate'.
        List will get joined by comma.
        String will be used as provided.

    :param user_agent:
        String representing the user-agent you want, such as
        "python-urllib3/0.6"

    :param basic_auth:
        Colon-separated username:password string for 'authorization: basic ...'
        auth header.

    :param proxy_basic_auth:
        Colon-separated username:password string for 'proxy-authorization: basic ...'
        auth header.

    :param disable_cache:
        If ``True``, adds 'cache-control: no-cache' header.

    Example::

        >>> make_headers(keep_alive=True, user_agent="Batman/1.0")
        {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'}
        >>> make_headers(accept_encoding=True)
        {'accept-encoding': 'gzip,deflate'}
    t   ,s   accept-encodings
   user-agents
   keep-alivet
   connections   Basic s   utf-8t   authorizations   proxy-authorizations   no-caches   cache-control(   t
   isinstancet   strt   listt   joint   ACCEPT_ENCODINGR   R   t   decode(   t
   keep_alivet   accept_encodingt
   user_agentt
   basic_autht   proxy_basic_autht   disable_cachet   headers(    (    s=   /tmp/pip-build-UPPWic/pip/pip/_vendor/urllib3/util/request.pyt   make_headers   s*    *&c         C@  sk   | d k	 r t |  | ƒ nK t |  d d ƒ d k	 rg y |  j ƒ  } Wqg t t f k
 rc t } qg Xn  | S(   s   
    If a position is provided, move file to that point.
    Otherwise, we'll attempt to record a position for future use.
    t   tellN(   t   Nonet   rewind_bodyt   getattrR   t   IOErrort   OSErrort   _FAILEDTELL(   t   bodyt   pos(    (    s=   /tmp/pip-build-UPPWic/pip/pip/_vendor/urllib3/util/request.pyt   set_file_positionb   s    c         C@  s™   t  |  d d ƒ } | d k	 rd t | t ƒ rd y | | ƒ Wq• t t f k
 r` t d ƒ ‚ q• Xn1 | t k r t d ƒ ‚ n t d t	 | ƒ ƒ ‚ d S(   sæ   
    Attempt to rewind body to a certain position.
    Primarily used for request redirects and retries.

    :param body:
        File-like object that supports seek.

    :param int pos:
        Position to seek to in file.
    t   seeksA   An error occurred when rewinding request body for redirect/retry.sR   Unable to record file position for rewinding request body during a redirect/retry.s4   body_pos must be of type integer, instead it was %s.N(
   R   R   R	   R   R   R   R   R   t
   ValueErrort   type(   R   t   body_post	   body_seek(    (    s=   /tmp/pip-build-UPPWic/pip/pip/_vendor/urllib3/util/request.pyR   t   s    (   t
   __future__R    t   base64R   t
   exceptionsR   t   packages.sixR   R   t   SKIP_HEADERt	   frozensett   SKIPPABLE_HEADERSR   t   brotlit   _unused_module_brotlit   ImportErrort   objectR   R   R   R    R   (    (    (    s=   /tmp/pip-build-UPPWic/pip/pip/_vendor/urllib3/util/request.pyt   <module>   s(   
	B	